LDAP 命名空間選項

LDAP 實作廣泛地使用了 Spring LDAP,因此熟悉該專案的 API 可能會有所幫助。

使用 <ldap-server> 元素定義 LDAP 伺服器

此元素設定一個 Spring LDAP ContextSource,供其他 LDAP Bean 使用,定義 LDAP 伺服器的位置和其他資訊(例如使用者名稱和密碼,如果它不允許匿名存取)以連接到它。它也可以用於建立嵌入式伺服器以進行測試。LDAP 章節涵蓋了兩種選項的語法詳細資訊。實際的 ContextSource 實作是 DefaultSpringSecurityContextSource,它擴展了 Spring LDAP 的 LdapContextSource 類別。manager-dnmanager-password 屬性分別對應到後者的 userDnpassword 屬性。

如果您的應用程式內容中只定義了一個伺服器,則其他命名空間定義的 LDAP Bean 將自動使用它。否則,您可以為元素提供 "id" 屬性,並使用 server-ref 屬性從其他命名空間 Bean 引用它。如果您想在其他傳統 Spring Bean 中使用 ContextSource 實例,這實際上是它的 Bean id

<ldap-server> 屬性

  • mode 明確指定應使用哪個嵌入式 LDAP 伺服器。值為 apachedsunboundid。預設情況下,它將取決於 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> 的父元素

<ldap-authentication-provider> 屬性

  • group-role-attribute LDAP 屬性名稱,其中包含將在 Spring Security 中使用的角色名稱。對應到 DefaultLdapAuthoritiesPopulatorgroupRoleAttribute 屬性。預設值為 "cn"。

  • group-search-base 群組成員資格搜尋的搜尋基準。對應到 DefaultLdapAuthoritiesPopulatorgroupSearchBase 建構子引數。預設值為 ""(從根目錄搜尋)。

  • group-search-filter 群組搜尋篩選器。對應到 DefaultLdapAuthoritiesPopulatorgroupSearchFilter 屬性。預設值為 (uniqueMember={0})。替換的參數是使用者的 DN。

  • role-prefix 將新增到從持久性載入的角色字串的非空字串前綴。對應到 DefaultLdapAuthoritiesPopulatorrolePrefix 屬性。預設值為 "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。它直接對應到 AbstractLdapAuthenticatoruserDnPatterns 屬性。該值是用於建構使用者 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=""

<ldap-authentication-provider> 的子元素

<password-compare>

這用作 <ldap-provider> 的子元素,並將身份驗證策略從 BindAuthenticator 切換到 PasswordComparisonAuthenticator

<password-compare> 的父元素

<password-compare> 屬性

  • hash 定義使用者密碼上使用的雜湊演算法。我們強烈建議不要使用 MD4,因為它是一種非常弱的雜湊演算法。

  • password-attribute 目錄中包含使用者密碼的屬性。預設值為 "userPassword"。

<password-compare> 的子元素

<ldap-user-service>

此元素配置 LDAP UserDetailsService。使用的類別是 LdapUserDetailsService,它是 FilterBasedLdapUserSearchDefaultLdapAuthoritiesPopulator 的組合。它支援的屬性與 <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})。替換的參數是使用者的登入名稱。