基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录

基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录
作者:家辉,日期:2017-08-22 CSDN博客: http://blog.csdn.net/gobitan
摘要:本系列的前三篇文章分别搭建了基于CAS的单点登录服务器,并让服务器支持MySQL存储用户名和密码,以及让Redis缓存用户认证信息。本文将采用CAS官方提供的基于传统WAR工程的CAS客户端样例来做单点登录测试。

环境概述
10.191.30.30 cas.example.org #CAS服务器
10.191.30.31 casclient1.example.org #CAS客户端1
10.191.30.32 casclient2.example.org #CAS客户端2
10.191.13.98 浏览器所在主机

部署CAS客户端1主机
第一步:获取CAS客户端部署包
git clone https://github.com/cas-projects/cas-sample-java-webapp

第二步:配置域名
在/etc/hosts中增加如下配置:
10.191.30.30 cas.example.org
10.191.30.31 casclient1.example.org
10.191.30.32 casclient2.example.org 
配置cas-sample-java-webapp/src/main/webapp/WEB-INF/web.xml
将所有8443前面默认的 mmoayyed.unicon.net替换为:cas.example.org
将所有9443前面默认的 mmoayyed.unicon.net替换为:casclient1.example.org

第三步:创建客户端证书
mkdir -p /etc/cas/jetty
export DNAME="${DNAME:-CN=casclient1.example.org,OU=Example,OU=Org,C=US}"
sudo keytool -genkey -alias client -keyalg RSA -keypass changeit -storepass changeit -keystore /etc/cas/jetty/thekeystore -dname ${DNAME}
sudo keytool -exportcert -alias client -storepass changeit -keystore /etc/cas/jetty/thekeystore -file /etc/cas/jetty/client.cer

第四步:导入服务器端证书
先将服务器端生成的/etc/cas/cas.cer下载到本地的当前目录,然后执行如下命令:
sudo keytool -import -trustcacerts -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -file cas.cer  -storepass changeit
提示是否要信任该证书时,输入”是”。
注意:经测试,官方提示导入证书的位置不对。

如果要清除刚导入的证书,执行如下命令:
sudo keytool -delete -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

第五步:运行CAS客户端
sudo mvn clean package jetty:run-forked

部署CAS客户端2主机
所有步骤与”部署CAS客户端1主机”的操作一样,把对应的casclient1.example.org替换为casclient2.example.org即可。

配置浏览器所在的主机
在/etc/hosts中增加如下配置: 
10.191.30.30 cas.example.org
10.191.30.31 casclient1.example.org
10.191.30.32 casclient2.example.org

测试CAS客户端与服务器的集成情况
第一步:先访问CAS客户端1: https://casclient1.example.org:9443/sample,系统会跳转到 https://cas.example.org:8443/cas/login,然后提示登录,输入用户名casuser和密码Mellon之后,系统回到 https://casclient1.example.org:9443/sample/页面。登录成功。
第二步:再访问CAS客户端2: https://casclient2.example.org:9443/sample,这时不再需要登录。

重复上面的步骤,做另外一个客户端CAS2。需要修改的地方包括:
[1] /etc/hosts
[2] cas-sample-java-webapp/src/main/webapp/WEB-INF/web.xml
[3] 创建证书(貌似可以不改)

常见错误及解决办法:
[1] No subject alternative DNS name matching
错误详情:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching cas.example.org found.
错误原因:原因是服务器端创建证书的时候dname和SAN中的域名不匹配。
解决办法:需在 cas-overlay-template的build.sh中将两者改为一样,举例如下:
DNAME="${DNAME:-CN=cas.example.org,OU=Example,OU=Org,C=US}”
CERT_SUBJ_ALT_NAMES="${CERT_SUBJ_ALT_NAMES:-dns:cas.example.org,dns:localhost,ip:127.0.0.1}"

[2] unable to find valid certification path to requested target
错误详情:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
错误原因:未将CAS服务器端的证书纳入到CAS客户端的Java keystore信任库中。
解决办法:现将服务器端的cas.cer下载下来,放在当前目录,然后执行如下命令,并在提示的时候输入”是”。如果是英文提示,需要输入”yes”。
sudo keytool -import -trustcacerts -alias cas -keystore $JAVA_HOME/jre/lib/security/cacerts -file cas.cer  -storepass changeit

参考资料:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gobitan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值