cas 4.0 单点登陆
来源:互联网 发布:zookeeper linux 下载 编辑:程序博客网 时间:2024/05/18 14:14
有关cas 单点登陆的原理请看 :http://blog.csdn.net/andychen314/article/details/41173637
在这里,主要是和大家分享一下修改或添加用户验证,以及TGT、ST、PGT、PT的内容改写,以及4.0中关于代理模式的注意事项。
CAS取消HTTPS
CAS 取消HTTPS需要改两处配置:
1、修改第一处:
/WEB-INF/deployerConfigContext.xml
<span style="font-family:Microsoft YaHei;font-size:18px;"><bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"p:httpClient-ref="httpClient"/></span>
增加参数p:requireSecure="false",是否需要安全验证,即HTTPS,false为不采用。修改后为:
<span style="font-family:Microsoft YaHei;font-size:18px;"><bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false"/></span>
2、修改第二处:
/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
<span style="font-family:Microsoft YaHei;font-size:18px;"><bean id="ticketGrantingTicketCookieGenerator"class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="true"p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas"/></span>
自定义用户验证配置
在自定义Handler之前,首先要先定义用户信息类,用户信息类需要继承于 UsernamePasswordCredential类,在父类中已定义username 和 password,新派生类只增加需要属性即可。如下图:
再将自定义用户信息类,注册到/WEB-INF/login-webflow.xml中。如下图:
然后将页面中用户信息类与页面作映射关系,然后将映射属性绑定。
用户验证
自定义Handler:新Handler必须继承于AuthenticationHandler。
将其配置到spring( /WEB-INF/deployerConfigContext.xml)中,并注入到PolicyBasedAuthenticationManager中, PolicyBasedAuthenticationManager中提供了Map注入和List注入两个构造函数。
下面配置文件的原配置文件为Map形式的注入:
修改为List形式注入。其中PolicyBasedAuthenticationManager中有此两个构造函数。
用户验证配置更改完成。
基础模式配置
首先,下面是完整的配置代码,然后进行分别讲解。
<!-- ======================== 单点登录开始 ======================== --><!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- CAS Server 通知 CAS Client,删除session,注销登录信息 --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <!-- 该过滤器负责用户的认证工作,必须启用它 --> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <!--这里是 cas 服务地址--> <param-name>casServerLoginUrl</param-name> <param-value>http://localhost:8000</param-value> </init-param> <init-param> <!--这里的server是服务端的IP--> <param-name>serverName</param-name> <param-value>http://localhost:8080/</param-value> </init-param> </filter> <!-- 该过滤器负责对Ticket的校验工作,必须启用它 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <!--这里是 cas 服务地址--> <param-name>casServerUrlPrefix</param-name> <param-value>http://localhost:8000</param-value> </init-param> <init-param> <!--这里的server是服务端的IP--> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <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> <!-- 自动根据单点登录的结果设置本系统的用户信息--> <filter> <display-name>AutoSetUserAdapterFilter</display-name> <filter-name>AutoSetUserAdapterFilter</filter-name> <filter-class>com.springapp.mvc.AutoSetUserAdapterFilter</filter-class> </filter> <filter-mapping> <filter-name>AutoSetUserAdapterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping><!-- ======================== 单点登录结束 ======================== -->
1、如果你需要单点退出功能(可选),那么首先要配置单点退出功能。
配置代码如下:
2、用户认证过滤器(必须配置)。配置代码如下:
3、Ticket的校验过滤器(必须配置)。配置代码如下:
4、filter-mapping的顺序,单点退出过滤必须放在最前面:
5、其它可选配置,其中最后一个是自定义过滤,自定义过滤中,可以获取用户名,从面载入用户信息:
代理模式配置
代理模式的配置是在基础模式之前增加了一个过滤,但配置方法一定注意。
在基础模式的“Ticket的校验过滤器”中增加初始参数,代码如下:
注意:其中新增加的参数值的URL中的后缀需要与被代理的Ticket过滤器中的proxyCallback的value操持一致,在登陆应用的时候,Cas Server会向被代理服务进行验证Url的正确性,如果不正确,则登陆不成功。
被代理应用配置
被代理应用服务的配置与基础模式的配置基本一致,现将不同之处进行说明:
1、被代理的应用服务配置主要是在“Ticket的校验过滤器”增加如下代码:
2、filter-mapping的顺序较基础模式中增加了代理的如下:
注意:如果有单点退出,单点退出放在第一位,其实是代理filter-mapping,如果没有单点退出监听,代理监听放在第一位。
如果有问题,或写的不合适地方,请告知,谢谢~
- cas 4.0 单点登陆
- CAS单点登陆
- Cas单点登陆配置
- CAS单点登陆原理
- CAS 单点登陆
- CAS单点登陆实践
- cas 单点登陆
- shiro cas 单点登陆
- CAS 单点登陆配置
- CAS 单点登陆
- CAS 单点登陆
- CAS 单点登陆
- CAS 单点登陆
- CAS 单点登陆
- 单点登陆CAS
- SSO CAS单点登陆
- 用CAS实现单点登陆
- 单点登陆(CAS)学习
- TCP连接的建立(一)
- 1009. Product of Polynomials (25)
- UVa 10397 Connect the Campus
- 第十二周项目 3 用递归方法求解(用递归方式求最大公约数)
- shell中截取字符串
- cas 4.0 单点登陆
- as3 常用正则表达式(来自天地会论坛之七夜)
- OpenCV学习的第一个实例(视屏滚动条)
- [Linux学习笔记] Zombie process
- JSP(3) - 9个JSP内置对象 - 小易Java笔记
- HDOJ-1269-迷宫城堡 解题报告
- 关于自定义view
- 最大公约与最小公倍
- Cursor类介绍