在该目录下创建一个名为 client1-99.json 的文件,client1 表示要接入的 client 的名字,99 表示要接入的 client 的 id,json 文件内容如下(这个配置可以参考官方给出的模版:overlays/org.apereo.cas.cas-server-webapp-tomcat-5.3.14/WEB-INF/classes/services/Apereo-10000002.json):
{
“@class”: “org.apereo.cas.services.RegexRegisteredService”,
“serviceId”: “^(https|http)😕/.*”,
“name”: “client1”,
“id”: 99,
“description”: “应用1 的定义信息”,
“evaluationOrder”: 1
}
这段 JSON 配置含义如下:
-
@calss 指定注册服务类,这个是固定的org.apereo.cas.services.RegexRegisteredService。
-
serviceId 则通过正则表达式用来匹配具体的请求。
-
name 是接入的 client 的名称。
-
id 是接入的 client 的 id。
-
description 是接入的 client 的描述信息。
-
evaluationOrder 则指定了执行的优先级。
接下来再在 src/main/resources/application.properties 文件中配置刚刚 json 的信息,如下:
cas.serviceRegistry.json.location=classpath:/services
cas.serviceRegistry.initFromJson=true
这里有两行配置:
-
指定配置 JSON 文件的位置。
-
开启 JSON 识别。
OK,配置完成后,重启 CAS Server。
CAS Server 启动成功后,我们在控制台看到如下日志,表示 JSON 配置已经加载成功了:
1.2 JDK 证书
第二个要提前准备的东西就是 JDK 证书。
在实际开发中,这一步可以忽略,但是因为我们现在用的自己生成的 SSL 证书,所以我们要将自己生成的证书导入到 JDK 中,否则在使用 Spring Security 接入 CAS 单点登录时,会抛出如下错误:
将 SSL 证书导入 JDK 中的命令其实也很简单,两个步骤,第一个导出 .cer
文件,第二步,导入 JDK,命令如下:
keytool -export -trustcacerts -alias casserver -file ./cas.cer -keystore ./keystore
sudo keytool -import -trustcacerts -alias casserver -file ./cas.cer -keystore /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/lib/security/cacerts
注意,在执行 export 导出命令时,需要输入密钥口令,这个口令就是自己一开始创建 SSL 证书时设置的。在执行 import 导入命令时,也需要输入口令,这个口令是 changeit,注意,不是自己一开始设置的。
密钥库的位置在 JDK 目录下的 /lib/security/cacerts
,小伙伴们根据自己实际情况来修改(在 JDK9 之前,位置在 jre/lib/security/cacerts
)。
我们在本地测试一定要导入证书到 JD