`

springsecurity Run-As认证服务

 
阅读更多
<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角色。

 

分享到:
评论

相关推荐

    spring-security 官方文档 中文版

    - **RunAsManager**:负责执行 RunAs 安全策略。 - **AfterInvocationManager**:在方法调用后执行的安全管理器。 - **扩展安全对象模型**:允许开发者自定义安全对象来满足特殊需求。 **5.6 国际化** - Spring...

    spring security 中文指南

    - Run-as 认证 - Java Authentication and Authorization Service (JAAS) - JEE 容器认证 - Kerberos - JOSSO、OpenNMS、AppFuse 等第三方认证服务 2. 简化配置与依赖注入 Spring Security 通过依赖注入原理...

    springsecurity.pdf

    Run-As认证替代方案允许开发者指定一个固定的角色,用于在执行某些操作时代替当前用户的权限。 ##### 10.2 配置 配置Run-As认证替代方案通常需要定义一个特殊的认证对象,并将其应用于特定的资源或方法。 #### 十...

    Spring Security

    Run-As认证机制允许在某些情况下使用替代用户凭据进行认证。 ##### 11.1 表单认证机制概述 表单登录是最常见的认证方式之一。Spring Security提供了完整的表单登录支持。 ##### 12.1 BASIC认证机制概述 BASIC...

    Spring_Security3中文指南.pdf

    - **Run-as 认证**:在同一会话中使用不同的安全身份。 - **Java Authentication and Authorization Service (JAAS)**:Java 平台的标准认证和授权服务。 - **JEE 容器认证**:支持使用容器管理的认证机制。 - **...

    最新ACEGI2.0教程

    - **配置**:指导如何配置Run-As认证提供者以适应特定的安全需求。 #### 十二、表单身份验证机制 - **概述**:介绍表单身份验证机制的工作原理及其优势。 - **配置**:详细说明如何配置表单身份验证机制,包括登录...

    Spring实现RESTful Web 服务Demo

    2. 使用Spring Security为REST服务添加认证和授权功能,确保服务安全。 3. 实现HATEOAS(Hypermedia as the Engine of Application State),使服务更具自发现性和可导航性。 4. 使用Swagger或Actuator等工具,为...

    spring 的权限管理框架 中文参考手册

    - **Run-As Authentication**:在同一会话中使用不同的安全身份。 - **Java Authentication and Authorization Service (JAAS)**:Java平台的标准认证和授权服务。 - **JEE Container Authentication**:继续使用...

    ACEGI

    11. **Run-as认证**:允许在一个调用中以不同的安全身份进行。 12. **Java认证和授权服务(JAAS)**:Java平台的标准认证与授权服务。 13. **与JBoss、Jetty、Resin等容器的集成**:提供对不同服务器环境的支持。 *...

    Acegi开发项目教程.pdf

    另一个高级特性是Run-As认证服务,它允许在某些情况下,系统自动以一个不同的用户身份执行后续操作,例如后台服务处理。 本教程附带了可运行的示例代码,这将极大地帮助读者理解和调试Acegi配置。通过实践这些示例...

    acegi的详细配置实现

    Run-As认证替换是一种特殊的认证方式,它可以允许用户以其他用户的权限执行某些操作。 ##### 10.2 配置 配置Run-As认证替换涉及到指定代理用户和目标用户之间的关系。 #### 十一、表单认证机制 ##### 11.1 概览 ...

    SpringBoot之HelloWorld的Maven项目(Eclipse)

    **SpringBoot之HelloWorld的Maven项目(Eclipse)** ...- **Spring Security**:提供安全控制,如用户认证和授权。 通过不断实践和学习,你将能够掌握SpringBoot的强大功能,构建复杂的企业级应用。

    Java高级技术之Shiro

    Shiro 与 SpringSecurity 的对比: * Spring Security 基于 Spring 开发,项目若使用 Spring 作为基础,配合 Spring Security 做权限更加方便,而 Shiro 需要和 Spring 进行整合开发。 * Spring Security 功能比 ...

    Shiro权限学习文档-适合初级中级高级

    - **Run As**:允许用户临时切换身份进行操作。 - **Remember Me**:实现用户登录后的“记住我”功能,简化再次登录的步骤。 Shiro 的设计原则是简单易用和可扩展性。从外部来看,它通过 Subject 提供清晰的 API,...

    吴天雄--shiro个人总结笔记.doc

    9. **Run As**:身份切换,允许用户在权限许可的情况下以另一身份进行操作。 10. **Remember Me**:记住我功能,用户登录后,下次访问仍能识别用户身份。 Shiro的架构包括: - **Subject**:主体,代表与系统交互的...

Global site tag (gtag.js) - Google Analytics