内容简介:在工作中,随着接触的项目越来越多,不同的开发语言,不同的部署系统,不同的项目都要维护自己的用户认证系统,有没有一种好的解决方案来解决这个痛点呢?答案肯定是有的,那就是业界鼎鼎有名的sso单点登录系统,也许你很早就听过这个词,但是只闻其声,不知其意,下面我们就将一起实战一次cas单点登录系统话不多说,我们开始吧。在浏览器中输入https//ip:8443测试端口地址
在工作中,随着接触的项目越来越多,不同的开发语言,不同的部署系统,不同的项目都要维护自己的用户认证系统,有没有一种好的解决方案来解决这个痛点呢?答案肯定是有的,那就是业界鼎鼎有名的sso单点登录系统,也许你很早就听过这个词,但是只闻其声,不知其意,下面我们就将一起实战一次cas单点登录系统话不多说,我们开始吧。
环境准备
- jdk1.8
- maven3.x
- centos7.x
- tomcat8.0
HTTPS证书准备
-
生成server.keystore
alias: 别名 这里起名tomcat
keyalg: 证书算法,RSA
keystore:证书生成的目标路径和文件名
keypass:密钥保护密码
storepass:存储密码
keytool -genkey -alias tomcat -keyalg RSA -keypass 123456 -storepass 123456 -keystore tomcat.keystore -validity 3600 复制代码
- 生成证书server.cer
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore tomcat.keystore -storepass 123456 复制代码
-
导入证书
看到下面的提示Certificate was added to keystore导入成功 其中-storepass changeit中 changeit即为默认密码和前面设置的密码没有关系
keytool -import -trustcacerts -alias tomcat -keystore "/home/jdk1.8.0_171/jre/lib/security/cacerts" -file "/root/software/server.cer" -storepass changeit 复制代码
- 删除证书(如果需要)
keytool -delete -alias tomcat -keystore "/home/jdk1.8.0_171/jre/lib/security/cacerts" -storepass changeit 复制代码
Tomcat配置Https
- 编辑
vi /root/software/apache-tomcat-8.5.37/conf/server.xml 加入配置项 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="tomcat.keystore" keystorePass="123456" /> 复制代码
- 启动tomcat测试8443端口
./bin/startup.sh 复制代码
在浏览器中输入https//ip:8443测试端口
下载CAS系统
这里选择5.3版本,因为从6.0版本开始项目改用的gradle编译了,个人对maven比较熟悉所以选择了5.3版本,另外没有科学上网的话,gradle依赖的jar是没法下载的
下载、解压
wget https://github.com/apereo/cas-overlay-template/archive/5.3.zip unzip 5.3.zip 复制代码
如果没有安装unzip命令 使用如下命令安装
yum install -y unzip zip 复制代码
进入解压后的文件,编译打包文件,等待完成
mvn package 复制代码
打包完成后
启动cas项目
将编译好的war包放到tomcat下的webapps下启动tomcat
cd /root/software/cas-overlay-template-5.3/target cp cas.war /root/software/apache-tomcat-8.0.53/webapps/ cd /root/software/apache-tomcat-8.0.53 ./bin/startup.sh 复制代码
使用默认的账号/密码 casuser/Mellon
登录成功
注销成功
另外还可以采用http方式访问 ip:8080/cas
原理:
当我们第一次访问系统时,客户端浏览器进程所占用的内存中不存在TGC Cookie,所以CAS Server认为用户未进行登录,因此将请求转发到登录页面,当登录后再次访问登录处理时,将会直接转发到已登录页面.
CAS Server根据Cookie(TGC是否能匹配TGT)来判断用户是否已登录过,默认情况下TGC Cookie位于浏览器进程所占用的内存中,因此当关闭浏览器时Cookie失效(TGC失效),此时再访问CAS登录页面将需要重新登录,当CAS服务器重启时,TGT将会失效(位于服务器内存),此时也需要重新进行登录.
当用户登录后,CAS Server会维护TGT与用户身份信息的关系,所有CAS Client可以从CAS Server中获取当前登录的用户的身份信息.
在已登录的状态下访问注销地址将会提示注销成功,其经过以下步骤:
1.清除保存在客户端浏览器的TGC Cookie(设空).
2.清除保存在服务器的TGT.
3.销毁所有CAS Client的Session对象.
当注销成功后,此时再访问登录页面时需重新登录.
总结
经过我们自己动手亲自搭建,已经完成了一个基本的cas认证服务系统,了解了其中的认证原理,但是如何跟我们的业务系统整合在一起呢?下一篇我们将动手实战这一系统。
以上所述就是小编给大家介绍的《CAS单点登录(SSO)实战(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- struts实战--登录功能实现
- Spring Security 实战干货:从零手写一个验证码登录
- Django2 Web实战02-用户注册登录退出
- 【ShareBook】1-后台框架与小程序用户登录接口实战
- 「小程序JAVA实战」小程序登录与后端联调(36)
- 【struts2+hibernate+spring项目实战】实现用户登录功能(ssh)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。