我正在将一个带有web.xml、安全约束、安全角色和登录配置的标准web应用程序移植到Spring Security3.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 Security3.0中是否有类似的映射功能?我希望避免修改应用程序来检查部署环境的物理角色,并且我不能让sys管理员仅为我的应用程序向用户的LDAP记录添加特定的角色/权限。
提前谢谢。
发布于 2012-05-17 21:42:19
Spring Security3.1有一个名为GrantedAuthoritiesMapper的通用映射策略,您可以实现该策略并将其注入到AuthenticationProvider中,以告诉它如何将其加载的权限转换为那些将用于在应用程序中做出决策的权限。
如果您使用的是早期版本,则可以直接实现AuthenticationProvider并自行定制Authentication对象的创建。例如,您可以定义一组在应用程序上下文文件中定义为映射的映射,并使用这些映射来创建从提供者返回的最终授权集。然后,映射实际上已经从web.xml移动到了应用程序上下文文件(应该不那么冗长)。
https://stackoverflow.com/questions/10609463
复制相似问题