2012-05-15 26 views
1

我正在將一個web.xml,安全約束,安全角色和登錄配置的標準Web應用程序移植到Spring Security 3.0。除了security-role-ref元素外,我已經找到了web.xml中幾乎所有功能的等效映射。Spring Security 3.0中security-role-ref和role-link的等價物是什麼?

我不想支配安全角色名是部署環境,所以我利用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記錄添加特定角色/權限。

在此先感謝。

回答

1

Spring Security 3.1擁有一個名爲GrantedAuthoritiesMapper的通用映射策略,您可以實現並注入到AuthenticationProvider中,告訴它如何將它加載的權限轉換爲將用於在應用程序內作出決定的權限。

如果您使用的是早期版本,則可以直接實施AuthenticationProvider並自定義您自己創建的Authentication對象。作爲示例,您可以在應用程序上下文文件中定義一組定義爲映射的映射,並使用這些映射來創建從提供程序返回的最後一組授權。映射然後真正從web.xml移動到應用程序上下文文件(並且應該不那麼冗長)。

相關問題