認證服務
這將建立一個Spring Security的ProviderManager類的例項,需要配置一個或多個AuthenticationProvider例項列表。這些例項可以使用名稱空間提供的語法元素建立,也可以是標準bean定義,透過authentication-provider元素標記以新增到列表中。
<authentication-manager>
每個使用名稱空間的Spring Security應用程式都必須在某處包含此元素。它負責註冊為應用程式提供認證服務的AuthenticationManager。所有建立AuthenticationProvider例項的元素都應該是此元素的子元素。
<authentication-manager> 屬性
-
alias 此屬性允許您為內部例項定義一個別名,以便在您自己的配置中使用。
-
erase-credentials 如果設定為true,一旦使用者透過認證,AuthenticationManager將嘗試清除返回的Authentication物件中的任何憑據資料。它實際上對映到
ProviderManager的eraseCredentialsAfterAuthentication屬性。
-
observation-registry-ref 對用於
FilterChain和相關元件的ObservationRegistry的引用。
-
id 此屬性允許您為內部例項定義一個id,以便在您自己的配置中使用。它與alias元素相同,但在使用id屬性的元素中提供了更一致的體驗。
<authentication-provider>
除非與ref屬性一起使用,否則此元素是配置DaoAuthenticationProvider的簡寫。DaoAuthenticationProvider從UserDetailsService載入使用者資訊,並將使用者名稱/密碼組合與登入時提供的值進行比較。UserDetailsService例項可以透過使用可用的名稱空間元素(jdbc-user-service)或使用user-service-ref屬性指向應用程式上下文中其他地方定義的bean來定義。
<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元素建立。
<jdbc-user-service>
導致建立基於JDBC的UserDetailsService。
<jdbc-user-service> 屬性
預設是
select username, authority from authorities where username = ?
-
cache-ref 定義UserDetailsService使用的快取引用。
-
data-source-ref 提供所需表的DataSource的bean 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例項。