基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录
来源:互联网 发布:nodejs怎么运行js文件 编辑:程序博客网 时间:2024/06/06 19:49
基于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客户端110.191.30.32 casclient2.example.org #CAS客户端210.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.org10.191.30.31 casclient1.example.org10.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/jettyexport 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.org10.191.30.31 casclient1.example.org10.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 matchingcas.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
参考资料:
[1] https://apereo.github.io/cas/5.1.x/integration/CAS-Clients.html
[2] https://github.com/ditunes/blog/issues/13
阅读全文
0 0
- 基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录
- 基于CAS的SSO单点登录
- CAS单点登录(SSO)
- 单点登录sso cas
- CAS SSO单点登录
- CAS sso单点登录
- cas sso 单点登录
- 基于CAS的单点登录SSO[5]: 基于Springboot实现CAS客户端的前后端分离
- 基于CAS的单点登录SSO[1]: 搭建CAS单点登录demo
- 单点登录(SSO)、CAS介绍
- CAS单点登录(SSO)总结
- JAVA CAS单点登录(SSO)
- CAS SSO单点登录实例
- CAS解决单点登录SSO
- 浅谈CAS单点登录(SSO)
- CAS解决单点登录SSO
- CAS实现SSO单点登录
- JAVA CAS单点登录(SSO)
- 51nod 1610 路径计数
- 余弦定理判断字符串相似度
- [Android UI]ConstraintLayout-约束性布局的使用和注意点
- 【Machine Learning】笔记:主成份分析 PCA
- Spark学习笔记(6)源码解读之Job动态生成和深度思考
- 基于CAS的单点登录SSO[4]: 加入两个CAS客户端测试单点登录
- C++ 类与对象
- vtk中的图片传给opencv的mat操作
- react native 开发笔记(二)
- Javascript之BOM与DOM讲解
- retrofit源碼分析
- 将Eclipse中的项目上传至oschina
- JAVA的jdbc向MySql表中插入各种数据类型
- JavaIO操作实现文件复制与名称修改