一,需求
因为公司内部子系统较多,需要建立一个门户网站把各个子系统接入进来,实现统一登录。
二,单点登录原理
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。此处我们使用Jasig CAS v4.0.0版本。
三,配置服务端
1,生成证书
使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore:
keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA -validity 36500
输入密钥库口令: 123456 //后面会用到,需要记住
再次输入新口令: 123456
您的名字与姓氏是什么?
[Unknown]: localhost //实际情况中为服务器的域名
您的组织单位名称是什么?
[Unknown]: bestpay
您的组织名称是什么?
[Unknown]: bestpay
您所在的城市或区域名称是什么?
[Unknown]: shanghai
您所在的省/市/自治区名称是什么?
[Unknown]: shanghai
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=localhost, OU=bestpay, O=bestpay, L=shanghai, ST=shanghai, C=cn是否正确?
[否]: y
输入 <localhost> 的密钥口令
(如果和密钥库口令相同, 按回车):
通过如上步骤,生成证书到D:\ localhost.keystore
2,修改tomcat的server.xml
此处使用了apache-tomcat-7.0.40版本,打开conf/server.xml,找到:
1 <!-- 2 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 3 maxThreads="150" scheme="https" secure="true" 4 clientAuth="false" sslProtocol="TLS" /> 5 -->
替换为:
1 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 2 maxThreads="150" scheme="https" secure="true" 3 clientAuth="false" sslProtocol="TLS" 4 keystoreFile="D:\localhost.keystore" keystorePass="123456"/>
keystorePass就是生成keystore时设置的密码。
3,将其cas-server-webapp模块封装到服务端的项目模块中,目录结构如图:
4,启动tomcat,输入https://localhost:8443/login,输入用户名:casuser,密码:Mellon即可登录
四,配置客户端