前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apereo CAS(一)在本地运行

Apereo CAS(一)在本地运行

作者头像
dhyuan
发布2022-11-08 12:51:34
1.8K0
发布2022-11-08 12:51:34
举报
文章被收录于专栏:响应式编程响应式编程

Apereo CAS,是CAS协议official reference implementation,也差不多是当前开源的SSO解决方案最好、最成熟的一个了。 当前版本是6.5,https://github.com/apereo/cas-overlay-template/tree/6.5。

本以为按照Apereo CAS的官方安装指南能够很容易把cas server在本地跑起来,但最后发现这个文档实操性略差。这里略过基础概念,直接记录一下本地运行的步骤。

没必要下载源码修改代码、配置然后build出自己的安装包,按照官方文档推荐直接使用“WAR Overlay Installation”的方式安装。

1)下载overlay框架代码,使用6.5分支代码。

代码语言:javascript
复制
git clone https://github.com/apereo/cas-overlay-template.git cas-server
git checkout -b 6.5 origin/6.5

Overlays这个方式是通过maven-war-plugin实现的:https://maven.apache.org/plugins/maven-war-plugin/overlays.html, gradle的实现:https://docs.freefair.io/gradle-plugins/current/reference/#_io_freefair_war_overlay 在这个cas项目里可参看 ./gradle/springboot.gradle 里bootWar部分。

2)gradle.perperties

这利用这个overlays项目运行CAS之前,可浏览一下gradle.properties文件定义的各个属性。其中, appServer 用于定义Apereo CAS server使用哪个内置server(Tomcat、Jetty…),如果只生成war部署到外部已存在的servlet contaier则无需定义此项。 certDir、serverKeyStore、exportedServerCert、storeType 这些选项用于定义https所用的证书。

3)gradle/tasks.gradle

./gradlew tasks 运行会显示可执行的tasks,其中一部分task被定义于 gradle/tasks.gradle 文件中。

代码语言:javascript
复制
CAS tasks
---------
casVersion - Display the current CAS version
copyCasConfiguration - Copy the CAS configuration from this project to /etc/cas/config
createKeystore - Create CAS keystore
createTheme - Create theme directory structure in the overlay
... ...

其中 createKeystore 用于生成https所用的证书。

代码语言:javascript
复制
sudo ./gradlew createKeystore

如果需要修改keystore的密码,可以执行:

代码语言:javascript
复制
keytool -storepasswd -keystore /etc/cas/thekeystore

生成https需要的PK和证书后,需要把CA导入到JDK的的ca根证书库中。

代码语言:javascript
复制
cd /etc/cas
sudo keytool -import -alias cas_cert -storepass changeit -file cas.crt -keystore  /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home/lib/security/cacerts

查看ca keystore

代码语言:javascript
复制
sudo keytools -list -storepass changeit -keystore /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home/lib/security/cacerts

从ca keystore中删除cascert

代码语言:javascript
复制
sudo keytool -delete  -alias cas_cert -keystore /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home/lib/security/cacerts -storepass changeit

4)cas的配置文件

把项目中的 etc/cas/config 目录下的默认配置内容copy到 /etc/cas/config 中。可以手工copy文件,也可以通过gradle task, ./gradlew copyCasConfiguration

默认的内置的用户名密码是 casuser/Mellon,可以通过修改/etc/cas/config/cas.properties cas.authn.accept.users=casuser::password 进行定义。

配置登录用户在Apereo里属于CAS Authentication 的范畴。

5)Build and Run

代码语言:javascript
复制
./gradlew clean build
java -jar ./build/libs/cas.war

或者运行:

代码语言:javascript
复制
 ./gradlew clean copyCasConfiguration build run

在浏览器中访问 https://localhost:8443/cas 进入CAS系统。

6) 其它

如果在日志里发现提示The generated key MUST be added to CAS settings, 则可按照提示把cas.tgc.crypto.encryption.key,cas.tgc.crypto.signing.key 加入到etc/cas/config/cas.properties 文件。

代码语言:javascript
复制
    2022-08-29 23:29:34,160 WARN [org.apereo.cas.util.cipher.BaseStringCipherExecutor] - <Secret key for encryption is not defined for [Ticket-granting Cookie]; CAS will attempt to auto-generate the encryption key>
    2022-08-29 23:29:34,168 WARN [org.apereo.cas.util.cipher.BaseStringCipherExecutor] - <Generated encryption key [rAHG_XeYnE-DbLtE77fngWAMtbB5lpIXYKbI_nSiD8I] of size [256] for [Ticket-granting Cookie]. The generated key MUST be added to CAS settings:

            cas.tgc.crypto.encryption.key=rAHG_XeYnE-DbLtE77fngWAMtbB5lpIXYKbI_nSiD8I

    >
    2022-08-29 23:29:34,170 WARN [org.apereo.cas.util.cipher.BaseStringCipherExecutor] - <Secret key for signing is not defined for [Ticket-granting Cookie]. CAS will attempt to auto-generate the signing key>
    2022-08-29 23:29:34,170 WARN [org.apereo.cas.util.cipher.BaseStringCipherExecutor] - <Generated signing key [cOlc7xQB5UJTwYrVmA30aQehEkxbSkcyHmE8vRkPHboRZkTn2rBJ8pUUPZfTJt7H8e3ecpitvuH2prrLxfIVxg] of size [512] for [Ticket-granting Cookie]. The generated key MUST be added to CAS settings:

            cas.tgc.crypto.signing.key=cOlc7xQB5UJTwYrVmA30aQehEkxbSkcyHmE8vRkPHboRZkTn2rBJ8pUUPZfTJt7H8e3ecpitvuH2prrLxfIVxg

Reference: [1]: https://apereo.github.io/cas/6.5.x/index.html [2]: https://github.com/apereo/cas-overlay-template/tree/6.5 [3]: https://medium.com/swlh/install-cas-server-with-db-authentication-8ff52234f52

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 响应式编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1)下载overlay框架代码,使用6.5分支代码。
  • 2)gradle.perperties
  • 3)gradle/tasks.gradle
  • 4)cas的配置文件
  • 5)Build and Run
  • 6) 其它
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档