Apereo CAS 之 管理界面

类似 cas-server,先下载 cas-management-overlay 代码,这里使用 6.5 分支。

$ git clone https://github.com/apereo/cas-management-overlay cas-management
$ cd cas-management
$ git checkout -b 6.5 origin/6.5

cas-management 应用本身也需要用户认证之后才能使用。这里使用它自己要管理的 cas-server 作为认证源。这时,cas-manager 本身就是 cas-server 的一个 client 或者说 service 了。
因此需要首先 把 management 配置为 cas-server 的一个 client/service

Apereo 支持不同的存储 service 注册的方式:json 文件、JPA、Redis …,这里使用 json 文件的方式把 cas-management 注册为 cas-server 的 service,即让 cas-manager 使用 cas-server 来认证用户。

1)在 cas-server 的 build.gradle 中添加依赖。

可参考官方文档:https://apereo.github.io/cas/6.5.x/services/Service-Management.html#storage

implementation "org.apereo.cas:cas-server-support-json-service-registry:${project.'cas.version'}"

2)告诉 cas-server 在哪里可以找到定义 client/service 的 json 文件

在文件 etc/cas/config/cas.properties 中加入如下配置:
cas.service-registry.json.location=classpath:/services

在 cas-server 项目的 src/resources 目录下创建一个名为 casManagement-2000.json 的文体。文件名的格式是 clientName + clientId.json,具体请阅读官方文档。

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|imaps)://.*",
  "name" : "casManagement",
  "id" : 2000,
  "logoutType" : "BACK_CHANNEL",
  "logoutUrl" : "https://localhost:8444/cas-management/logout"
}

3)配置 cas-management

上面两步是配置 cas-server 以把 cas-manager 作为它的 client。现在,配置 cas-management。
编辑 cas-management 项目里的 etc/case/config/management.properties 文件,内容如下。

cas.server.name=https://localhost:8443
cas.server.prefix=${cas.server.name}/cas

server.port=8444
mgmt.server-name=https://localhost:8444
mgmt.admin-roles[0]=ROLE_ADMIN
mgmt.user-properties-file=file:/etc/cas/config/users.json

logging.config=file:/etc/cas/config/log4j2-management.xml

server.ssl.key-store=file:/etc/cas/thekeystore
server.ssl.key-store-password=changeit

# Let the cas-management to know where to find/save the registed services
cas.service-registry.json.location=file:YOUR_PATH_TO_DIR_CONTAINS_JSONFILES/services

需要注意的是要保证 cas.server 和 mgmt server 的端口不要冲突,一个是 8443,一个是 8444。
这里方便起见,cas-management 和 cas-server 共享了同一个 keystore。

配置项cas.service-registry.json.location告诉 cas-management 到哪里去读写(管理)定义 client/service 的 json 文件。这个目录
是和 cas-server 的 cas.service-registry.json.location=classpath:/services 是一致的。

4) 同时运行 cas-server,cas-management 后,访问 https://localhost:8444/cas-management/

CAS-Management-UI