CAS 单点登录实战 (3) Client端
来源:互联网 发布:数据库isnull 编辑:程序博客网 时间:2024/05/20 22:37
Client端配置
web.xml配置
client 的配置非常简单,依葫芦画瓢随便网上copy一份即可,改一下配置。这里介绍没有跟spring结合的做法,依赖2个jar包: cas-client-core-3.2.1.jar, commons-logging-1.2.jar。
(1) web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>CAS CLIENT DEMO</display-name><!--(1) logout 定义开始 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --><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>
<!--(2) login 定义开始 该过滤器负责用户的认证工作,必须启用它 --><filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <!-- 中心服务器--> <param-value>http://localhost:8080/casserver/login</param-value> </init-param> <!-- 这是客户机的IP --> <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>
<!--(3) 该过滤器负责对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> <param-value>http://localhost:8080/casserver</param-value> </init-param> <!-- 这是客户机的IP --> <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><!--(4) 该过滤器负责实现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><!--(5) 该过滤器负责把ticket验证后产生的Assertion放入ThreadLocal中,以便 不能访问web层的资源使用。该过滤器可以使得开发者可以通过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><!-- ======================== 单点登录结束 ======================== --></web-app>
(2) 获取登陆的用户信息
其实这些信息都是上面的filter 塞进去的,有兴趣的可以下载源码打开看看,通过如下3个方式都可以得到用户信息:
(1)登陆账号: request.getRemoteUser();(2)AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();登陆账号:principal.getName();(3)Object object =request.getSession().getAttribute("_const_cas_assertion_");Assertion assertion =(Assertion)object;登陆账号:assertion.getPrincipal().getName();
(3) 更细粒度的权限控制
比如该用户有没有某某模块的xx功能等等,扩展server端是可以让他返回更多的信息,但是这个做法个人觉得不好。 作为一个认证中心,他为各式各样的的子系统服务,而每个系统的权限控制和设计是五花八门的,如果都放在认证中心那将会是个噩梦,根本无从适应,所以server端只需要存储最基本的信息就够了,甚至不需要保存,server端里面再调用其他服务来判断是否认证通过。 client需要做另外的权限控制可以在本系统设计一个权限控制系统,比如传统的基于角色的权限控制。那么结合我们的单点登录,可以加个filter,在登陆后根据用户名把该用户的角色权限等查出来放到本机的session,以便本系统做权限控制之用。
0 0
- CAS 单点登录实战 (3) Client端
- CAS单点登录实战
- Cas单点登录(6)Cas Client配置
- 基于CAS实现单点登录(SSO):cas client端的退出问题
- cas server + cas client 单点登录 原理介绍
- cas server +cas client 单点登录配置实例
- cas 单点登录(SSO)实验之二: cas-client
- <学习笔记>cas server + cas client 单点登录 原理介绍
- <学习笔记>cas server + cas client 单点登录 原理介绍
- cas server + cas client 单点登录 原理介绍
- CAS单点登录-客户端集成(cas-client)(九)
- CAS单点登录项目实战(1)
- CAS 单点登录实战 (1) 介绍
- CAS 单点登录实战 (2) 服务器端
- cas 4.1.4单点登录实战
- Jasig cas 单点登录系统Server&Java Client配置
- 2、cas4.0 单点登录 之 cas-client
- cas单点登录系统:客户端(client)详细配置
- Java笔记15:多线程
- 怎么命名变量?
- Lighttpd1.4.20源码分析 笔记 状态机之请求处理
- jQuery选择器
- 欢迎使用CSDN-markdown编辑器
- CAS 单点登录实战 (3) Client端
- Vbs脚本经典教材
- 注*TP 3.2 使用 官方 WeChat 类. 获取用户信息(授权页面) ---纯手工打造!
- Thinking in java学习笔记—泛型(擦除)
- HDU 1232 畅通工程(并查集)
- 读 程序猿之华丽转身,菜鸟4步曲有感!
- Educational Codeforces Round 5(A,B,C,D)
- 浅谈 SOAP
- Python -- Control Flow Tools