我正在将一个带有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记录的特定角色/权限。
提前致谢。
答案 0 :(得分:1)
Spring Security 3.1有一个名为GrantedAuthoritiesMapper的通用映射策略,您可以将其实现并注入AuthenticationProvider
,告诉它如何将其加载的权限转换为用于在其中进行决策的权限申请。
如果您使用的是早期版本,则可以直接实施AuthenticationProvider
并自行自定义Authentication
对象的创建。例如,您可以在应用程序上下文文件中定义一组定义为映射的映射,并使用这些映射创建从提供程序返回的最终权限集。然后,映射实际上刚刚从web.xml
移动到应用程序上下文文件(并且应该更简洁)。