【CAS SSO学习心得】 CAS(Central Authentication Service)是一种广泛使用的单点登录(Single Sign-On,简称SSO)框架,主要由Java编写。在本文中,我们将深入探讨如何配置CAS服务器以及客户端,以便实现单点登录功能,并获取多样化的用户信息。 要搭建CAS SSO环境,你需要准备以下组件: 1. CAS服务器:在这个例子中,我们使用的是cas-server-3.5.1版本。 2. CAS客户端:对应的是cas-client-3.2.1版本,同样可以在官方网址http://www.jasig.org下载。 **服务端配置** 对于CAS服务器,配置主要集中在取消SSL证书和使用HTTP协议上。在`cas-server-webapp`的`/WEB-INF/spring-configuration`目录下,有两个文件需要调整: 1. `ticketGrantingTicketCookieGenerator.xml`:在这里,我们需要将`cookieSecure`属性设置为`false`,以允许非HTTPS连接。同时,设置`cookieMaxAge`为`-1`表示浏览器关闭时删除Cookie,`cookieName`和`cookiePath`用于定义Cookie的名称和作用域。 ```xml <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"> <property name="cookieSecure" value="false"/> <property name="cookieMaxAge" value="-1"/> <property name="cookieName" value="CASTGC"/> <property name="cookiePath" value="/cas"/> </bean> ``` 2. `warnCookieGenerator.xml`:类似地,修改这个文件中的`cookieSecure`属性,确保与`ticketGrantingTicketCookieGenerator`一致。 ```xml <bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"> <property name="cookieSecure" value="false"/> <property name="cookieMaxAge" value="-1"/> <property name="cookieName" value="CASPRIVACY"/> <property name="cookiePath" value="/cas"/> </bean> ``` **用户验证配置** 为了实现基于数据库的用户验证,我们需要在`/WEB-INF/deployerConfigContext.xml`中配置`authenticationHandlers`。这里我们使用了两种处理器: 1. `HttpBasedServiceCredentialsAuthenticationHandler`:处理基于HTTP的服务验证,设置`requireSecure`为`false`以支持HTTP协议。 2. `QueryDatabaseAuthenticationHandler`:处理JDBC查询验证。需要指定数据源`dataSource`,SQL查询语句,以及密码编码器`passwordEncoder`。 配置`casDataSource`如下,它是一个Apache Commons DBCP的`BasicDataSource`,连接到MySQL数据库: ```xml <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ntong"/> <property name="username" value="ntong"/> <property name="password" value="ntong"/> </bean> ``` 然后配置`passwordEncoder`,这里使用了SHA1算法的`DefaultPasswordEncoder`: ```xml <bean id="passwordEncoderBean" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg value="SHA1"/> </bean> ``` **获取多样化用户信息** 在客户端,你可能需要从CAS服务器获取不同类型的用户信息。这通常通过CAS服务器提供的API或服务完成。例如,你可以通过服务票证(Service Ticket)请求用户的身份验证信息,然后在服务端解析这个票证,从中提取用户的相关属性。 在Java中,你可以使用`CasClientConfigurer`来配置CAS客户端,包括指定服务URL、认证URL等。然后,你可以创建一个`CasAssertionAuthenticationToken`,通过它的`getPrincipal()`方法获取包含用户信息的`Principal`对象。 CAS SSO提供了灵活的配置和扩展性,可以根据实际需求调整服务器和客户端的配置,以实现安全、高效的单点登录解决方案。同时,它也允许开发者通过定制处理程序和解析器来获取并处理多样化的用户信息。学习和掌握CAS SSO不仅可以提升你的身份验证和授权管理能力,也有助于构建更加健壮、用户友好的Web应用。
剩余7页未读,继续阅读
- 粉丝: 6
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助