LDAP 名稱空間選項
LDAP 實現廣泛使用了 Spring LDAP,因此熟悉該專案的 API 可能會有所幫助。
使用...定義 LDAP 伺服器
<ldap-server>
元素 該元素設定一個 Spring LDAP ContextSource
供其他 LDAP bean 使用,定義了 LDAP 伺服器的位置以及連線到伺服器所需的其他資訊(如果伺服器不允許匿名訪問,例如使用者名稱和密碼)。它也可用於建立嵌入式伺服器以進行測試。這兩種選項的語法詳情在 LDAP 章節中介紹。實際的 ContextSource
實現是 DefaultSpringSecurityContextSource
,它擴充套件了 Spring LDAP 的 LdapContextSource
類。manager-dn
和 manager-password
屬性分別對映到後者的 userDn
和 password
屬性。
如果您的應用上下文中只定義了一個伺服器,其他由 LDAP 名稱空間定義的 bean 將自動使用它。否則,您可以為該元素指定一個 "id" 屬性,並使用 server-ref
屬性從其他名稱空間 bean 中引用它。如果您想在其他傳統的 Spring bean 中使用它,這實際上就是 ContextSource
例項的 bean id
。
<ldap-server> 屬性
-
mode 顯式指定應使用哪個嵌入式 LDAP 伺服器。值可以是
apacheds
和unboundid
。預設情況下,取決於庫是否在 classpath 中可用。
-
id Bean 識別符號,用於在上下文中的其他地方引用該 bean。
-
ldif 顯式指定要載入到嵌入式 LDAP 伺服器中的 ldif 檔案資源。ldif 應該是一個 Spring 資源模式(例如 classpath:init.ldif)。預設是 classpath*:*.ldif
-
manager-dn 用於認證到(非嵌入式)LDAP 伺服器的“管理器”使用者身份的使用者名稱(DN)。如果省略,將使用匿名訪問。
-
manager-password 管理器 DN 的密碼。如果指定了 manager-dn,則此屬性是必需的。
-
port 指定 IP 埠號。例如,用於配置嵌入式 LDAP 伺服器。預設值是 33389。
-
root 嵌入式 LDAP 伺服器的可選根字尾。預設值是 "dc=springframework,dc=org"
-
url 指定不使用嵌入式 LDAP 伺服器時的 LDAP 伺服器 URL。
<ldap-authentication-provider>
該元素是建立 LdapAuthenticationProvider
例項的簡寫。預設情況下,它將配置一個 BindAuthenticator
例項和一個 DefaultAuthoritiesPopulator
。與所有名稱空間認證提供者一樣,它必須作為 authentication-provider
元素的子元素包含在內。
<ldap-authentication-provider> 屬性
-
group-role-attribute 包含將在 Spring Security 中使用的角色名稱的 LDAP 屬性名。對映到
DefaultLdapAuthoritiesPopulator
的groupRoleAttribute
屬性。預設為 "cn"。
-
group-search-base 用於組員資格搜尋的搜尋基準。對映到
DefaultLdapAuthoritiesPopulator
的groupSearchBase
建構函式引數。預設為 ""(從根目錄開始搜尋)。
-
group-search-filter 組搜尋過濾器。對映到
DefaultLdapAuthoritiesPopulator
的groupSearchFilter
屬性。預設為(uniqueMember={0})
。被替換的引數是使用者的 DN。
-
role-prefix 將新增到從持久化儲存載入的角色字串的非空字串字首。對映到
DefaultLdapAuthoritiesPopulator
的rolePrefix
屬性。預設為 "ROLE_"。在預設值非空的情況下,使用值 "none" 表示沒有字首。
-
server-ref 要使用的可選伺服器。如果省略,並且註冊了一個預設的 LDAP 伺服器(使用沒有 Id 的 <ldap-server>),將使用該伺服器。
-
user-context-mapper-ref 允許透過指定一個 UserDetailsContextMapper bean 來顯式定製載入的使用者物件,該 bean 將使用使用者的目錄條目中的上下文資訊進行呼叫
-
user-details-class 允許指定使用者條目的 objectClass。如果設定,框架將嘗試將定義類的標準屬性載入到返回的 UserDetails 物件中
-
user-dn-pattern 如果您的使用者在目錄中有固定位置(即您可以直接從使用者名稱推匯出 DN,而無需進行目錄搜尋),您可以使用此屬性直接對映到 DN。它直接對映到
AbstractLdapAuthenticator
的userDnPatterns
屬性。該值是用於構建使用者 DN 的特定模式,例如uid={0},ou=people
。必須包含鍵{0}
,它將被替換為使用者名稱。
-
user-search-base 使用者搜尋的搜尋基準。預設為 ""。僅與 'user-search-filter' 一起使用。
如果您需要執行搜尋以在目錄中定位使用者,則可以設定這些屬性來控制搜尋。
BindAuthenticator
將配置一個FilterBasedLdapUserSearch
,並且屬性值直接對映到該 bean 建構函式的前兩個引數。如果未設定這些屬性並且未提供user-dn-pattern
作為替代,則將使用預設搜尋值user-search-filter="(uid={0})"
和user-search-base=""
。
-
user-search-filter 用於搜尋使用者的 LDAP 過濾器(可選)。例如
(uid={0})
。被替換的引數是使用者的登入名。如果您需要執行搜尋以在目錄中定位使用者,則可以設定這些屬性來控制搜尋。
BindAuthenticator
將配置一個FilterBasedLdapUserSearch
,並且屬性值直接對映到該 bean 建構函式的前兩個引數。如果未設定這些屬性並且未提供user-dn-pattern
作為替代,則將使用預設搜尋值user-search-filter="(uid={0})"
和user-search-base=""
。
<password-compare>
<ldap-user-service>
該元素配置一個 LDAP UserDetailsService
。使用的類是 LdapUserDetailsService
,它是 FilterBasedLdapUserSearch
和 DefaultLdapAuthoritiesPopulator
的組合。它支援的屬性與 <ldap-provider>
中的用法相同。
<ldap-user-service> 屬性
-
cache-ref 定義對用於 UserDetailsService 的快取的引用。
-
group-role-attribute 包含將在 Spring Security 中使用的角色名稱的 LDAP 屬性名。預設為 "cn"。
-
group-search-base 用於組員資格搜尋的搜尋基準。預設為 ""(從根目錄開始搜尋)。
-
group-search-filter 組搜尋過濾器。預設為
(uniqueMember={0})
。被替換的引數是使用者的 DN。
-
id Bean 識別符號,用於在上下文中的其他地方引用該 bean。
-
role-prefix 將新增到從持久化儲存(例如 "ROLE_")載入的角色字串的非空字串字首。在預設值非空的情況下,使用值 "none" 表示沒有字首。
-
server-ref 要使用的可選伺服器。如果省略,並且註冊了一個預設的 LDAP 伺服器(使用沒有 Id 的 <ldap-server>),將使用該伺服器。
-
user-context-mapper-ref 允許透過指定一個 UserDetailsContextMapper bean 來顯式定製載入的使用者物件,該 bean 將使用使用者的目錄條目中的上下文資訊進行呼叫
-
user-details-class 允許指定使用者條目的 objectClass。如果設定,框架將嘗試將定義類的標準屬性載入到返回的 UserDetails 物件中
-
user-search-base 使用者搜尋的搜尋基準。預設為 ""。僅與 'user-search-filter' 一起使用。
-
user-search-filter 用於搜尋使用者的 LDAP 過濾器(可選)。例如
(uid={0})
。被替換的引數是使用者的登入名。