<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="daoAuthenticationProvider" />
<security:authentication-provider ref="runAsImplAuthenticationProvider" />
</security:authentication-manager>
<bean id="methodSecurityInterceptor" class="org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="securityMetadataSource" ref="delegatingMethodSecurityMetadataSource" />
<property name="runAsManager" ref="runAsManager" />
<property name="objectDefinitionSource">
<value>
zhangxin.security.service.RoleService.loadMenu=ROLE_USER, RUN_AS_TEMP
zhangxin.security.RunAsDemo.RunAsDate.showDate=ROLE_ADMIN, ROLE_RUN_AS_TEMP
</value>
</property>
</bean>
<!-- 替换验证身份 -->
<bean id="runAsImplAuthenticationProvider" class="org.springframework.security.access.intercept.RunAsImplAuthenticationProvider">
<property name="key" value="javaee" />
</bean>
<bean id="runAsManager" class="org.springframework.security.access.intercept.RunAsManagerImpl">
<property name="key" value="javaee" />
</bean>
objectDefinitionSource 与 delegatingMethodSecurityMetadataSource 一样,都为获取的资源。
以上配置
zhangxin.security.service.RoleService.loadMenu 简称方法A
zhangxin.security.RunAsDemo.RunAsDate.showDate 简称方法B
用户要访问方法B,而用户拥有的角色为ROLE_USER,
访问方法B,需要角色为ROLE_RUN_AS_TEMP,
那么此时就必须使用户拥有角色ROLE_RUN_AS_TEMP,才能访问方法B。
关键点再这里:
访问方法A的过程中会拥有以'RUN_AS'开头的RUN_AS_TEMP角色,实际过程中还会再加上角色前缀'ROLE_',也就是ROLE_RUN_AS_TEMP角色。
该用户在拥有角色ROLE_USER在执行方法A的过程中,拥有ROLE_RUN_AS_TEMP角色,在执行方法A过程中可以调用方法B。
注意: 用户执行方法A之前,没有ROLE_RUN_AS_TEMP角色,执行方法过程中才有,执行完毕后,自动移除ROLE_RUN_AS_TEMP角色。
分享到:
相关推荐
- **RunAsManager**:负责执行 RunAs 安全策略。 - **AfterInvocationManager**:在方法调用后执行的安全管理器。 - **扩展安全对象模型**:允许开发者自定义安全对象来满足特殊需求。 **5.6 国际化** - Spring...
- Run-as 认证 - Java Authentication and Authorization Service (JAAS) - JEE 容器认证 - Kerberos - JOSSO、OpenNMS、AppFuse 等第三方认证服务 2. 简化配置与依赖注入 Spring Security 通过依赖注入原理...
Run-As认证替代方案允许开发者指定一个固定的角色,用于在执行某些操作时代替当前用户的权限。 ##### 10.2 配置 配置Run-As认证替代方案通常需要定义一个特殊的认证对象,并将其应用于特定的资源或方法。 #### 十...
Run-As认证机制允许在某些情况下使用替代用户凭据进行认证。 ##### 11.1 表单认证机制概述 表单登录是最常见的认证方式之一。Spring Security提供了完整的表单登录支持。 ##### 12.1 BASIC认证机制概述 BASIC...
- **Run-as 认证**:在同一会话中使用不同的安全身份。 - **Java Authentication and Authorization Service (JAAS)**:Java 平台的标准认证和授权服务。 - **JEE 容器认证**:支持使用容器管理的认证机制。 - **...
- **配置**:指导如何配置Run-As认证提供者以适应特定的安全需求。 #### 十二、表单身份验证机制 - **概述**:介绍表单身份验证机制的工作原理及其优势。 - **配置**:详细说明如何配置表单身份验证机制,包括登录...
2. 使用Spring Security为REST服务添加认证和授权功能,确保服务安全。 3. 实现HATEOAS(Hypermedia as the Engine of Application State),使服务更具自发现性和可导航性。 4. 使用Swagger或Actuator等工具,为...
- **Run-As Authentication**:在同一会话中使用不同的安全身份。 - **Java Authentication and Authorization Service (JAAS)**:Java平台的标准认证和授权服务。 - **JEE Container Authentication**:继续使用...
11. **Run-as认证**:允许在一个调用中以不同的安全身份进行。 12. **Java认证和授权服务(JAAS)**:Java平台的标准认证与授权服务。 13. **与JBoss、Jetty、Resin等容器的集成**:提供对不同服务器环境的支持。 *...
另一个高级特性是Run-As认证服务,它允许在某些情况下,系统自动以一个不同的用户身份执行后续操作,例如后台服务处理。 本教程附带了可运行的示例代码,这将极大地帮助读者理解和调试Acegi配置。通过实践这些示例...
Run-As认证替换是一种特殊的认证方式,它可以允许用户以其他用户的权限执行某些操作。 ##### 10.2 配置 配置Run-As认证替换涉及到指定代理用户和目标用户之间的关系。 #### 十一、表单认证机制 ##### 11.1 概览 ...
**SpringBoot之HelloWorld的Maven项目(Eclipse)** ...- **Spring Security**:提供安全控制,如用户认证和授权。 通过不断实践和学习,你将能够掌握SpringBoot的强大功能,构建复杂的企业级应用。
Shiro 与 SpringSecurity 的对比: * Spring Security 基于 Spring 开发,项目若使用 Spring 作为基础,配合 Spring Security 做权限更加方便,而 Shiro 需要和 Spring 进行整合开发。 * Spring Security 功能比 ...
- **Run As**:允许用户临时切换身份进行操作。 - **Remember Me**:实现用户登录后的“记住我”功能,简化再次登录的步骤。 Shiro 的设计原则是简单易用和可扩展性。从外部来看,它通过 Subject 提供清晰的 API,...
9. **Run As**:身份切换,允许用户在权限许可的情况下以另一身份进行操作。 10. **Remember Me**:记住我功能,用户登录后,下次访问仍能识别用户身份。 Shiro的架构包括: - **Subject**:主体,代表与系统交互的...