Spring Security 3.0中的security-role-ref和role-link相当于什么?

时间:2012-05-15 22:03:28

标签: java spring java-ee spring-security

我正在将一个带有web.xml,security-constraint(s),security-role(s)和login-config的标准Web应用程序移植到Spring Security 3.0。除了security-role-ref元素之外,我找到了web.xml中几乎所有功能的等效映射。

我不想指定部署环境的安全角色名称,因此我正在利用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中是否有类似的映射工具?我希望避免修改应用程序以检查部署环境的物理角色,并且我无法让sys管理员为我的应用程序添加用户LDAP记录的特定角色/权限。

提前致谢。

1 个答案:

答案 0 :(得分:1)

Spring Security 3.1有一个名为GrantedAuthoritiesMapper的通用映射策略,您可以将其实现并注入AuthenticationProvider,告诉它如何将其加载的权限转换为用于在其中进行决策的权限申请。

如果您使用的是早期版本,则可以直接实施AuthenticationProvider并自行自定义Authentication对象的创建。例如,您可以在应用程序上下文文件中定义一组定义为映射的映射,并使用这些映射创建从提供程序返回的最终权限集。然后,映射实际上刚刚从web.xml移动到应用程序上下文文件(并且应该更简洁)。