CAS 与 Spring Security 3.1整合配置详解

一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中 的合法主体,也就是说用户能否访问该系统。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个 文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

对 于上面提到的两种应用情景,Spring Security 框架都有很好的支持。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。

若Spring Security 整合 CAS单点登录 ,使用CAS进行认证和获取授权信息,使用Spring Security验证权限,则可以很好的把公共的认证和授权与具体应用剥离开来,同时简化应用的配置。本文就Spring Security 与 CAS的整合进行说明。

一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中 的合法主体,也就是说用户能否访问该系统。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个 文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

对 于上面提到的两种应用情景,Spring Security 框架都有很好的支持。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。

若Spring Security 整合 CAS单点登录 ,使用CAS进行认证和获取授权信息,使用Spring Security验证权限,则可以很好的把公共的认证和授权与具体应用剥离开来,同时简化应用的配置。本文就Spring Security 与 CAS的整合进行说明。

一 、 基本需求
1. jdk 5.0
2. tomcat 6
3. Spring 3.0.5.RELEASE
4. Spring Security 3.1.0.RELEASE
5. CAS cas-server-3.4.7, cas-client-3.2.0
6. 使用http协议进行传输
7. 通过jdbc进行用户验证,需要通过casserver提供除登录用户名以外的附加信息(用于Spring Security 进行验证权限)

二、搭建CAS Server
1. 把从 http://www.jasig.org/cas/download 上下载cas解压找到 cas-server-3.4.7-releasecas-server-3.4.7modulescas-server-webapp-3.4.7.war , 解压cas-server-webapp-3.4.7.war ,部署在至tomcat上端口为 8080的server上,如部署路径为 http://localhost:8080/cas 。为了达到需求目的,我们主要需要对 /WEB-INF/deployerConfigContext.xml 文件进行修改。

  1. 使用jdbc数据源进行用户认证,需要修改deployerConfigContext.xml 的authenticationHandlers方式



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将CAS集成到Spring Security中,需要遵循以下步骤: 1. 在pom.xml中添加依赖项: ``` <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-security</artifactId> <version>${cas.version}</version> </dependency> ``` 2. 在Spring Security配置文件中添加以下内容: ``` <security:http entry-point-ref="casEntryPoint"> <security:intercept-url pattern="/secure/**" access="ROLE_USER"/> <security:custom-filter ref="casAuthenticationFilter" after="CAS_FILTER"/> </security:http> <bean id="casEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> <property name="loginUrl" value="https://CAS_SERVER/login"/> <property name="serviceProperties" ref="serviceProperties"/> </bean> <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"> <property name="service" value="https://${APP_HOST}:${APP_PORT}/j_spring_cas_security_check"/> <property name="sendRenew" value="false"/> </bean> <bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> <property name="authenticationManager" ref="authenticationManager"/> </bean> <security:authentication-manager alias="authenticationManager"> <security:authentication-provider ref="casAuthenticationProvider"/> </security:authentication-manager> <bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService"/> <property name="serviceProperties" ref="serviceProperties"/> <property name="ticketValidator"> <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"> <constructor-arg value="https://CAS_SERVER"/> </bean> </property> <property name="key" value="casAuthenticationProvider"/> </bean> <bean id="userDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource" ref="dataSource"/> <property name="usersByUsernameQuery"> <value>SELECT username,password,enabled FROM users WHERE username=?</value> </property> <property name="authoritiesByUsernameQuery"> <value>SELECT username, role FROM user_roles WHERE username=?</value> </property> </bean> ``` 3. 在CAS服务器上配置应用程序的服务: ``` { "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "https://${APP_HOST}:${APP_PORT}/j_spring_cas_security_check", "name" : "My Application", "id" : 1, "evaluationOrder" : 10, "attributeReleasePolicy": { "@class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy" } } ``` 这些步骤将使CASSpring Security集成在一起,从而实现基于CAS的身份验证和授权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值