CAS单点登录实践
转自:
http://stacker.top/blog/2016/12/24/CAS%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95%E5%AE%9E%E8%B7%B5/
一、部署tomcat
二、配置tomcat SSL链接
1、首先使用jre的keytool工具生成keystore文件
C:\Program Files\Java\jdk1.8.0_25\jre\bin>keytool.exe -genkey -alias tomcat -ke
alg RSA
输入**库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: 是
输入 <tomcat> 的**口令
(如果和**库口令相同, 按回车):
keystore生成之后会存放在用户目录下C:\Users\zhidong\.keystore
- 配置 Tomcat 以使用 keystore 文件
修改tomcat配置文件server.xml使用该keystore文件,内容如下
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="C:/Users/zhidong/.keystore" keystorePass="james-huang" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" />1.测试
启动 Tomcat 并访问 https://localhost:8443. 你将看到 Tomcat 默认的首页。如图:
需要注意的是,如果你访问默认的 8080 端口,还是有效的。
三、配置CAS 服务器
1、下载cas server包
2、获取cas-server-webapp-4.0.0.war
包
3、拷贝到tomcat webapps目录下。
4、tomcat默认autodeploy,即拷贝过去后tomcat会热加载该war包。
5、查询CAS Server登陆页面的用户名密码
该文件apache-tomcat-8.5.9\webapps\cas-server-webapp-4.0.0\WEB-INF\deployerConfigContext.xml中的
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <map> <entry key="casuser" value="Mellon"/> </map> </property> </bean>
6、测试页面
四、配置CAS Client
1、下载 cas client的包cas-client-core-3.2.1.jar
2、创建web工程。
3、编辑web.xml 增加如下内容、
<!-- ======================== 单点登录开始 ======================== --> <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- 该过滤器用于实现单点登出功能,可选配置。 --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责用户的认证工作,必须启用它 --> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <!--这里的单点登录服务器登录url --> <param-value>https://localhost:8443/cas-server-webapp-4.0.0/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责对Ticket的校验工作,必须启用它 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <!-- 该参数需要配置为cas server的url前缀,即不带login --> <param-value>https://localhost:8443/cas-server-webapp-4.0.0</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- ======================== 单点登录结束 ======================== -->
4、将web工程导出war包,到tomcat的webapps目录。
5、浏览器访问,该cas client的工程页面。