認證服務

這將建立一個Spring Security的ProviderManager類的例項,需要配置一個或多個AuthenticationProvider例項列表。這些例項可以使用名稱空間提供的語法元素建立,也可以是標準bean定義,透過authentication-provider元素標記以新增到列表中。

<authentication-manager>

每個使用名稱空間的Spring Security應用程式都必須在某處包含此元素。它負責註冊為應用程式提供認證服務的AuthenticationManager。所有建立AuthenticationProvider例項的元素都應該是此元素的子元素。

<authentication-manager> 屬性

  • alias 此屬性允許您為內部例項定義一個別名,以便在您自己的配置中使用。

  • erase-credentials 如果設定為true,一旦使用者透過認證,AuthenticationManager將嘗試清除返回的Authentication物件中的任何憑據資料。它實際上對映到ProviderManagereraseCredentialsAfterAuthentication屬性。

  • observation-registry-ref 對用於 FilterChain 和相關元件的 ObservationRegistry 的引用。

  • id 此屬性允許您為內部例項定義一個id,以便在您自己的配置中使用。它與alias元素相同,但在使用id屬性的元素中提供了更一致的體驗。

<authentication-manager> 的子元素

<authentication-provider>

除非與ref屬性一起使用,否則此元素是配置DaoAuthenticationProvider的簡寫。DaoAuthenticationProviderUserDetailsService載入使用者資訊,並將使用者名稱/密碼組合與登入時提供的值進行比較。UserDetailsService例項可以透過使用可用的名稱空間元素(jdbc-user-service)或使用user-service-ref屬性指向應用程式上下文中其他地方定義的bean來定義。

<authentication-provider> 的父元素

<authentication-provider> 屬性

  • ref 定義對實現AuthenticationProvider的Spring bean的引用。

如果您編寫了自己的AuthenticationProvider實現(或者由於某種原因想將Spring Security自己的實現配置為傳統bean),那麼可以使用以下語法將其新增到ProviderManager的內部列表中

<security:authentication-manager>
  <security:authentication-provider ref="myAuthenticationProvider" />
</security:authentication-manager>
<bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>
  • user-service-ref 對實現UserDetailsService的bean的引用,該bean可以使用標準bean元素或自定義user-service元素建立。

<authentication-provider> 的子元素

<jdbc-user-service>

導致建立基於JDBC的UserDetailsService。

<jdbc-user-service> 屬性

  • authorities-by-username-query 根據使用者名稱查詢使用者授予許可權的SQL語句。

預設是

select username, authority from authorities where username = ?
  • cache-ref 定義UserDetailsService使用的快取引用。

  • data-source-ref 提供所需表的DataSource的bean ID。

  • group-authorities-by-username-query 根據使用者名稱查詢使用者組許可權的SQL語句。預設是

    select
    g.id, g.group_name, ga.authority
    from
    groups g, group_members gm, group_authorities ga
    where
    gm.username = ? and g.id = ga.group_id and g.id = gm.group_id
  • id bean 識別符號,用於在上下文中的其他地方引用 bean。

  • role-prefix 將新增到從持久儲存載入的角色字串的非空字串字首(預設為“ROLE_”)。如果預設值非空,則使用“none”表示沒有字首。

  • users-by-username-query 根據使用者名稱查詢使用者名稱、密碼和啟用狀態的SQL語句。預設是

    select username, password, enabled from users where username = ?

<password-encoder>

認證提供者可以選擇配置為使用密碼編碼器,如密碼儲存中所述。這將導致bean被注入適當的PasswordEncoder例項。

<password-encoder> 的父元素

<password-encoder> 屬性

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

  • ref 定義對實現PasswordEncoder的Spring bean的引用。

<user-service>

從屬性檔案或“user”子元素列表建立記憶體中的UserDetailsService。使用者名稱在內部轉換為小寫,以允許不區分大小寫的查詢,因此如果需要區分大小寫,則不應使用此功能。

<user-service> 屬性

  • id bean 識別符號,用於在上下文中的其他地方引用 bean。

  • properties 屬性檔案的位置,其中每行格式為

    username=password,grantedAuthority[,grantedAuthority][,enabled|disabled]

<user-service> 的子元素

<user>

代表應用程式中的一個使用者。

<user> 的父元素

<user> 屬性

  • authorities 授予使用者的一個或多個許可權。許可權之間用逗號分隔(但沒有空格)。例如,“ROLE_USER,ROLE_ADMINISTRATOR”

  • disabled 可以設定為“true”以將帳戶標記為停用且不可用。

  • locked 可以設定為“true”以將帳戶標記為鎖定且不可用。

  • name 分配給使用者的使用者名稱。

  • password 分配給使用者的密碼。如果相應的認證提供者支援雜湊(請記住設定“user-service”元素的“hash”屬性),則此密碼可以進行雜湊處理。如果資料不用於認證,而僅用於訪問許可權,則可以省略此屬性。如果省略,名稱空間將生成一個隨機值,防止其意外用於認證。不能為空。

© . This site is unofficial and not affiliated with VMware.