SpringSecurity 3.1 与 CAS 集成的配置文件及说明
注:
1、testSecurityMetadataSource为自定义,实现用户访问url与role对应关系的查询和验证。
2、testUserDetailServiceProxy为自定义,根据用户的用户id,查询用户详细信息的功能。
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<!-- CAS验证配置。-->
<!-- 适用环境:用户身份验证由CAS完成,用户是否有权限访问指定url则由业务系统来负责验证 -->
<!-- 验证过程:1.用户访问受限的url,springsecurity 将请求转发到cas服务器上 -->
<!-- 验证过程:2.用户在cas服务器上登录,cas服务器将验证返馈信息返回给应用 -->
<!-- 验证过程:3.用户登录成功后,继续是行下面的验证过滤器testFilterSecurityInterceptor的验证,如果用户拥有访问url的指定角色,则转发到目标url,否则转发到禁止访问页面。-->
<!--
Enable security, let the casAuthenticationEntryPoint handle all intercepted urls. The CAS_FILTER needs to be in the
right position within the filter chain.
-->
<!-- 在http标签上添加entry-point-ref 指定验证入口为 casAuthenticationEntryPoint -->
<security:http entry-point-ref="casAuthenticationEntryPoint" auto-config="false" pattern="/**">
<!-- 设置所有url访问需要包括角色ROLE_USER,可选。 -->
<security:intercept-url pattern="/**" access="ROLE_USER"></security:intercept-url>
<!-- 在验证链中添加cas的过滤器,用于进行cas验证。 -->
<security:custom-filter position="CAS_FILTER" ref="casAuthenticationFilter"></security:custom-filter>
<!-- 添加自定义url权限的验证过滤,放在FILTER_SECURITY_INTERCEPTOR前面,用于进行验证当前用户是否拥有访问指定url的权限。 -->
<security:custom-filter before="FILTER_SECURITY_INTERCEPTOR" ref="testFilterSecurityInterceptor"></security:custom-filter>
</security:http>
<!-- 定义资源权限验证的过滤器。 -->
<bean id="testFilterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<!-- 身份验证器 -->
<property name="authenticationManager" ref="authenticationManager" />
<!-- 访问决策器 -->
<property name="accessDecisionManager" ref="testAccessDecisionManager" />
<!-- 获取可访问资源的role列表 -->
<property name="securityMetadataSource" ref="testSecurityMetadataSource" />
</bean>
<!-- 访问决策器 -->
<bean id="testAccessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
<constructor-arg index="0">
<list>
<bean class="org.springframework.security.access.vote.RoleVoter">
<property name="rolePrefix" value=""></property>
</bean>
</list>
</constructor-arg>
</bean>
<!-- 获取可访问资源的role列表 -->
<bean id="testSecurityMetadataSource" class="com.balance.test.integeration.acegi.AutoDelegatingSecurityMetadataSource" />
<!--
Required for the casProcessingFilter, so define it explicitly set and specify an Id Even though the
authenticationManager is created by default when namespace based config is used.
-->
<!-- 身份验证器 -->
<security:authentication-manager alias="authenticationManager">
<!-- CAS身份验证器 -->
<security:authentication-provider ref="casAuthenticationProvider"></security:authentication-provider>
</security:authentication-manager>
<!--
This section is used to configure CAS. The service is the actual redirect that will be triggered after the CAS login
sequence.
-->
<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
<!--
http://localhost:8088/具体应用/j_spring_cas_security_check spring的虚拟URL,此标志标识使用 CAS authentication (upon return from CAS
SSO login.)
-->
<property name="service" value="http://PCNAME:8080/test/j_spring_cas_security_check"></property>
<property name="sendRenew" value="false"></property>
</bean>
<!--The CAS filter handles the redirect from the CAS server and starts the ticket validation.-->
<bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager"></property>
</bean>
<!--
The entryPoint intercepts all the CAS authentication requests. It redirects to the CAS loginUrl for the CAS login
page.
-->
<bean id="casAuthenticationEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">
<!-- SSO登录地址 -->
<property name="loginUrl" value="https://PCNAME:8443/cas/login"></property>
<property name="serviceProperties" ref="serviceProperties"></property>
</bean>
<!--Handles the CAS ticket processing.-->
<bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
<property name="authenticationUserDetailsService" ref="casAuthenticationUserDetailsService" />
<property name="serviceProperties" ref="serviceProperties"></property>
<property name="ticketValidator">
<bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<!-- SSO验证地址 -->
<constructor-arg index="0" value="https:/PCNAME:8443/cas" />
</bean>
</property>
<property name="key" value="cas"></property>
</bean>
<!-- userdetail service cas wrapper -->
<bean id="casAuthenticationUserDetailsService" class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
<property name="userDetailsService">
<ref bean="testUserDetailServiceProxy" />
</property>
</bean>
<!-- userdetailService 定义 -->
<bean id="testUserDetailServiceProxy" class="com.balance.test.integeration.acegi.AutoDelegatingUserDetailService">
<property name="reservedUsernamePrefixs" value="admin,manager,user" />
</bean>
</beans>
分享到:
相关推荐
- **配置数据源**:在CAS配置文件中添加数据源信息。 - **配置JDBC认证器**:定义如何查询数据库获取用户信息。 ##### 2.4 扩展CASServer界面 CAS提供了自定义界面的功能,可以通过修改模板文件来自定义登录页面的...
- **web.xml 配置**: 描述了如何在 web.xml 文件中设置基本的 Spring Security 配置。 - **最小的 `<http>` 配置**: 展示了一个简单的 HTTP 安全配置示例。 - **表单和基本登录选项**: 介绍了如何配置表单登录和...
- **配置 JDBC 数据源**:在 CASServer 的配置文件中添加数据源的相关配置。 - **定义查询语句**:编写 SQL 查询语句,用于从数据库中检索用户信息。 ##### 2.4 扩展 CASServer 界面 除了默认的登录页面,还可以...
在提供的压缩包中,`spring-security-3.0.0.RELEASE.zip`包含了3.0.0版本的源码,而`spring-security-3.1.3.RELEASE-dist.zip`包含了3.1.3版本的jar文件,可以方便地集成到你的项目中。 总的来说,Spring Security...
Spring Security 4.0 支持使用 Java 配置而非 XML 配置文件来定义安全规则。 ##### 3.1 Hello Web Security Java 配置 这是一个简单的例子,展示了如何使用 Java 配置实现 Web 安全。 ```java @Configuration @...
- 解释如何修改Spring Security的配置文件来集成数据库,以实现动态化的权限管理。 - **2.2 数据库表结构** - 详细介绍用于存储用户信息及权限的数据库表的设计方案,包括必要的字段及其含义。 **3. 自定义...
Spring Security 3.1 版本带来了一系列重要的更新,包括但不限于对 Spring Framework 3.1 的支持、新的配置选项以及对现有特性的改进。 ##### 2.2 命名空间更新 在 Spring Security 3.1 中,命名空间也得到了增强...
2. **配置LDAP服务器:** 需要在Spring Security的配置文件中指定LDAP服务器的信息,包括主机名、端口、DNS域名等。 3. **定义认证源:** 使用`LdapAuthenticationProvider`来定义认证源,并配置相关的属性,如用户...
CAS - spring-security-cas.jar 26 OpenID - spring-security-openid.jar 26 测试 - spring-security-test.jar 26 2.4.4检出来源 26 3. Spring Security 4.2的新特性 27 3.1 Web改进 27 3.2配置改进 28 3.3杂项 28 4...
- Spring Security支持在`spring-security.xml`配置文件中使用特定的命名空间简化配置过程。 - **示例代码**: 使用`<http auto-config="true">`简化HTTP安全配置。 - **1.3 完善整个项目** - 包括设置依赖、创建...
- **web.xml 配置**:展示如何在 `web.xml` 文件中配置 Spring Security。 - **最小化配置**:提供一个简单的 `<http>` 配置示例。 ##### 4.3 高级 Web 功能 除了基本配置外,Spring Security 还提供了许多高级...
Spring Security 能够与任何基于 Java 的应用程序无缝集成,并且它支持多种部署环境,如传统的 Java EE 服务器或基于 Web 的应用服务器。 ##### 1.2 历史沿革 Spring Security 最初由 Ben Alex 创建于 2004 年,并...
2. 配置文件:在Spring Boot项目中,通常会有一个`application.properties`或`application.yml`文件,用于配置CAS客户端的相关参数,如CAS服务器的URL、服务验证端点、安全相关的属性等。 3. 登录与票证验证:当...
- **与 Spring MVC 集成**:如果项目已经使用了 Spring MVC,则可以通过特定的配置方式来集成 Spring Security。 ##### 3.2 HttpSecurity 类 `HttpSecurity` 类是 Java 配置的核心类之一,提供了大量的配置选项来...