Apereo CAS(一)在本地运行

2022-11-08 12:51:34 浏览数 (1)

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

0 人点赞