java - Spring Security 3.0 中的 security-role-ref 和 role-link 等价物是什么?

标签 java spring jakarta-ee spring-security

我正在将带有 web.xml、安全约束、安全角色和登录配置的标准 Web 应用程序移植到 Spring Security 3.0。我在 web.xml 中找到了几乎所有功能的等效映射,security-role-ref 元素除外。

我不想规定安全角色名称用于部署环境,因此我利用 J2EE 安全的映射功能将逻辑角色名称映射到物理角色名称,如下所示:

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>org.example.MyServlet</servlet-class>
    <security-role-ref>
        <role-name>MANAGER</role-name>
        <role-link>DISTRICT_MANAGER</role-link>
    </security-role-ref>
</servlet>

请注意,在上面的代码片段中,代码或 JSP 中有一项或多项检查,以查看用户是否处于逻辑角色“MANAGER”中。在此特定部署中,该角色链接到从 JAAS 上下文(JDBC 或 LDAP)返回的物理角色“DISTRICT_MANAGER”。

Spring Security 3.0 中是否有类似的映射工具?我希望避免必须修改应用程序来检查部署环境的物理角色,并且我无法让系统管理员仅为我的应用程序向用户的 LDAP 记录添加特定角色/权限。

提前致谢。

最佳答案

Spring Security 3.1 有一个通用的映射策略,叫做 GrantedAuthoritiesMapper您可以实现它并将其注入(inject) AuthenticationProvider 以告诉它如何将它加载的权限转换为将用于在应用程序中做出决策的权限。

如果您使用的是较早的版本,您可以直接实现AuthenticationProvider 并自定义Authentication 对象的创建。例如,您可以在应用程序上下文文件中定义一组定义为映射的映射,并使用它们来创建从提供者返回的最终权限集。映射实际上只是从 web.xml 移动到应用程序上下文文件(并且应该不那么冗长)。

关于java - Spring Security 3.0 中的 security-role-ref 和 role-link 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609463/

相关文章:

Spring AMQP RPC 非默认交换

eclipse vs tomcat 部署-项目在 eclipse 中运行时导出的 war (部分)失败

java - HTML5/Javascript 验证复选框提交 URL 重定向

java - 如何从 Amazon S3 存储桶中的文件夹中获取所有文件?

Spring 5 :optional injection points using @Nullable

java - 如何在 Java EE 环境中拦截和验证 HTTP 请求

java - 消息驱动 Bean-何时使用

java - 为什么 java (minecraft) 似乎正在重置我的变量?

java - 从 Android 程序中的 xml 资源中获取整数数组

java - 使用 spring 注解创建不同的上下文