单点登录CAS-Demo

 
 

1,安全证书配置

CAS默认使用HTTPS协议,如果对安全要求不高,可使用HTTP协议。

修改为HTTP协议的步骤如下:

修改deployerConfigContext.xml 增加参数p:requireSecure="false",意为:不需要安全验证。

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"p:httpClient-ref="httpClient"  
  2. p:requireSecure="false"/>  

修改 ticketGrantingTicketCookieGenerator.xml (路径:cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml)ticketGrantingTicketCookieGeneratorp:cookieSecure 属性的值改为 false

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <bean id="ticketGrantingTicketCookieGenerator"class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
  2. p:cookieSecure="false"p:cookieMaxAge="-1" p:cookieName="CASTGC"p:cookiePath="/cas" />  

2,部署服务端CAS-Server

CAS-Server下载地址:http://www.jasig.org/cas/download

解压cas-server-3.4.11-release.zip提取cas-server-3.4.11/modules/cas-server-webapp-3.4.11.war文件,把改文件copyTomcat下,如,D: omacat-casServerwebapps目下,并重命名为:cas.war.

启动tomacat-casServer,在浏览器地址栏输入:http://localhost:8080/cas/login ,回车

CAS-server的默认验证规则:只要用户名和密码相同就认证通过(仅仅用于测试,生成环境需要根据实际情况修改),输入admin/admin点击登录,就可以看到登录成功的页面:

CAS-Server部署成功。

3,部署CAS-Client

CAS-Client下载地址:http://downloads.jasig.org/cas-clients/

(1)解压cas-client-3.2.1-release.zip提取cas-client-3.2.1/modules/cas-client-core-3.2.1.jar

(2)tomcat默认自带的 webappsexamples项目作为客户端 

(3)安装配置 tomcat-client1

解压apache-tomcat-7.0.6并重命名为tomcat-client1

,修改tomcat的启动端口(共计5处),在文件conf/server.xml文件找到如下内容:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <Server port="8005" shutdown="SHUTDOWN">  
  2. <Connector port="8080" protocol="HTTP/1.1"  
  3.   connectionTimeout="20000"  
  4.   redirectPort="8443" />  
  5. <Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />  

修改成如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <Server port="18005" shutdown="SHUTDOWN">  
  2. <Connector port="18080" protocol="HTTP/1.1"  
  3.   connectionTimeout="20000"  
  4.   redirectPort="18443" />  
  5. <Connector port="18009" protocol="AJP/1.3"redirectPort="18443" />  

(4)启动tomcat-app1,浏览器输入http://localhost:18080/examples/servlets/回车:

tomcat-client的配置成功。

(5)复制 clientlibcas-client-core-3.2.1.jarcommons-logging-1.1.jartomcat-clientwebappsexamplesWEB-INFlib目录下,tomcat-clientwebappsexamplesWEB-INFweb.xml 文件中添加如下配置:

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <!-----------------单点登录开始---------------------------->  
  2.                 <!--用于单点退出,该过滤器用于实现单点登出功能,可选配置-->  
  3.                 <listener>  
  4.                         <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
  5.                 </listener>  
  6. <!--该过滤器用于实现单点登出功能,可选配置。 -->  
  7.                 <filter>  
  8.                         <filter-name>CASSingle Sign Out Filter</filter-name>  
  9.                         <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
  10.                 </filter>  
  11.                 <filter-mapping>  
  12.                         <filter-name>CASSingle Sign Out Filter</filter-name>  
  13.                         <url-pattern>/*</url-pattern>  
  14.                 </filter-mapping>  
  15. <filter>  
  16.                         <filter-name>CASFilter</filter-name>  
  17.                         <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
  18.                         <init-param>  
  19.                                 <param-name>casServerLoginUrl</param-name>  
  20.                                 <param-value>https://demo.micmiu.com:8443/cas/login</param-value>  
  21.                         </init-param>  
  22.                         <init-param>  
  23.                                 <param-name>serverName</param-name>  
  24.                                 <param-value>http://app1.micmiu.com:18080</param-value>  
  25.                         </init-param>  
  26.                 </filter>  
  27.                 <filter-mapping>  
  28.                         <filter-name>CASFilter</filter-name>  
  29.                         <url-pattern>/*</url-pattern>  
  30.                 </filter-mapping>  
  31.                 <!--该过滤器负责对Ticket的校验工作,必须启用它 -->  
  32.                 <filter>  
  33.                         <filter-name>CASValidation Filter</filter-name>  
  34.                         <filter-class>  
  35.                                 org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
  36.                         <init-param>  
  37.                                 <param-name>casServerUrlPrefix</param-name>  
  38.                                 <param-value>https://demo.micmiu.com:8443/cas</param-value>  
  39.                         </init-param>  
  40.                         <init-param>  
  41.                                 <param-name>serverName</param-name>  
  42.                                 <param-value>http://app1.micmiu.com:18080</param-value>  
  43.                         </init-param>  
  44.                 </filter>  
  45.                 <filter-mapping>  
  46.                         <filter-name>CASValidation Filter</filter-name>  
  47.                         <url-pattern>/*</url-pattern>  
  48.                 </filter-mapping>  
  49. <!--  
  50.                         该过滤器负责实现HttpServletRequest请求的包裹,  
  51.                         比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。  
  52.                 -->  
  53.                 <filter>  
  54.                         <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>  
  55.                         <filter-class>  
  56.                                 org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  
  57.                 </filter>  
  58.                 <filter-mapping>  
  59.                         <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>  
  60.                         <url-pattern>/*</url-pattern>  
  61.                 </filter-mapping>  
  62. <!--  
  63.                 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。  
  64.                 比如AssertionHolder.getAssertion().getPrincipal().getName()。  
  65.                 -->  
  66.                 <filter>  
  67.                         <filter-name>CASAssertion Thread Local Filter</filter-name>  
  68.                         <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  
  69.                 </filter>  
  70.                 <filter-mapping>  
  71.                         <filter-name>CASAssertion Thread Local Filter</filter-name>  
  72.                         <url-pattern>/*</url-pattern>  
  73.                 </filter-mapping>  
  74. <!--------------------------------单点登录结束 ------------------------------->  

(6)

安装配置 tomcat-client2

解压apache-tomcat-7.0.6并重命名为tomcat-client2

,修改tomcat的启动端口(共计5处),在文件conf/server.xml文件找到如下内容:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <Server port="8005" shutdown="SHUTDOWN">  
  2. <Connector port="8080" protocol="HTTP/1.1"  
  3.   connectionTimeout="20000"  
  4.   redirectPort="8443" />  
  5. <Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />  

 

修改成如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <Server port="28005" shutdown="SHUTDOWN">  
  2. <Connector port="28080" protocol="HTTP/1.1"  
  3.   connectionTimeout="20000"  
  4.   redirectPort="28443" />  
  5. <Connector port="28009" protocol="AJP/1.3"redirectPort="28443" />  

以下其他步骤同配置tomcat-client1

4,测试SSO

分别启动tomcat-casServertomcat-client1tomcat-client2

 

测试流程:打开client1 url —->跳转cas server 验证 —->显示client1 的应用 —->打开client2 url —-> 显示client2应用 —->注销cas server —->打开client1/client2 url->重新跳转到cas server验证.

 

动手操作,观察单点登录效果。

原文地址:https://www.cnblogs.com/accumulater/p/6587127.html