簡體   English   中英

Spring LDAP 3.1自定義用戶映射器

[英]Spring LDAP 3.1 Custom User Mapper

我正在使用Spring Security和Spring LDAP開發應用程序。 這是我的spring-security.xml的一部分:

<authentication-manager alias="authenticationManager">
    <ldap-authentication-provider
            user-search-filter="sAMAccountName={0}"
            user-search-base="OU=UK,OU=Domain Objects,dc=test,dc=test1"
            group-search-filter="member={0}"
            group-search-base="OU=_Groups,OU=UK,OU=Domain Objects,dc=test,dc=test1"
            group-role-attribute="cn"
            role-prefix="ROLE_">
    </ldap-authentication-provider>
</authentication-manager>

<ldap-server url="ldap://host:389/"
                      manager-dn="managerUser"
                      manager-password="ManagerPassword" />

現在,我需要對用戶屬性進行一些邏輯處理。 我想知道是否有一種方法可以在登錄階段獲取該屬性,或者每次需要該屬性時都需要在LDAP上進行搜索。

現在看網上,我有點困惑,因為我在網上找到了許多獲取自定義屬性的方法:在DAO或AbstractContextMapper中擴展ContextMapper或擴展LdapUserDetailsMapper。

您能幫我找到正確的解決方案嗎? 我認為最好的方法是擁有一個可以在登錄階段放置所需屬性的對象,而不是每次需要該屬性時都查詢LDAP。 謝謝

我不確定您要問的是什么。 我可以告訴您的是,一旦您通過LDAP spring安全性進行了身份驗證,便會緩存用戶詳細信息,因此您無需在每個后續請求中都調用LDAP。

這意味着在用戶登錄后調用的任何后續方法都可以獲取用戶詳細信息,如下所示:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
UserDetails ldapUser = (UserDetails) authentication.getPrincipal();

或者,如果您願意,可以將其轉換為您創建的自定義類,只要實現UserDetails。

public class MyUser implements UserDetails {
.....
}

這有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM