LDAP 命名空間選項
LDAP 實作廣泛地使用了 Spring LDAP,因此熟悉該專案的 API 可能會有所幫助。
使用 <ldap-server>
元素定義 LDAP 伺服器
此元素設定一個 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 LDAP 屬性名稱,其中包含將在 Spring Security 中使用的角色名稱。對應到
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 LDAP 屬性名稱,其中包含將在 Spring Security 中使用的角色名稱。預設值為 "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})
。替換的參數是使用者的登入名稱。