認証サービス
これにより、Spring Security の ProviderManager
クラスのインスタンスが作成されます。これは、1 つ以上の AuthenticationProvider
インスタンスのリストを使用して構成する必要があります。これらは、名前空間によって提供される構文要素を使用して作成することも、authentication-provider
要素を使用してリストに追加するようにマークされた標準の Bean 定義にすることもできます。
<authentication-manager>
名前空間を使用するすべての Spring Security アプリケーションには、この要素をどこかに含める必要があります。アプリケーションに認証サービスを提供する AuthenticationManager
の登録を担当します。AuthenticationProvider
インスタンスを作成するすべての要素は、この要素の子でなければなりません。
<authentication-manager> 属性
alias この属性を使用すると、独自の構成で使用する内部インスタンスのエイリアス名を定義できます。
erase-credentials true に設定されている場合、AuthenticationManager は、ユーザーが認証されると、返された Authentication オブジェクトの資格情報データをクリアしようとします。文字通り、
ProviderManager
のeraseCredentialsAfterAuthentication
プロパティにマップします。
観察レジストリ参照
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 の実装の 1 つを従来の Bean として構成したい場合は、次の構文を使用して ProviderManager
の内部リストに追加できます。
<security:authentication-manager>
<security:authentication-provider ref="myAuthenticationProvider" />
</security:authentication-manager>
<bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>
user-service-ref 標準 Bean 要素またはカスタム user-service 要素を使用して作成できる UserDetailsService を実装する Bean への参照。
<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
インスタンスが挿入されます。
<user-service>
プロパティファイルまたは「ユーザー」子要素のリストからメモリ内 UserDetailsService を作成します。ユーザー名は、大文字と小文字を区別しない検索を可能にするために内部的に小文字に変換されるため、大文字と小文字を区別する必要がある場合は使用しないでください。
<user-service> の属性
id Bean 識別子。コンテキストの他の場所で Bean を参照するために使用されます。
properties 各行が次の形式であるプロパティファイルの場所
username=password,grantedAuthority[,grantedAuthority][,enabled|disabled]
<user>
アプリケーション内のユーザーを表します。
<user> 属性
disabled "true" に設定すると、アカウントを無効かつ使用不可としてマークできます。
locked "true" に設定すると、アカウントをロック済みで使用不可としてマークできます。
name ユーザーに割り当てられたユーザー名。
password ユーザーに割り当てられたパスワード。対応する認証プロバイダーがハッシュをサポートしている場合、これをハッシュすることができます("user-service" 要素の "hash" 属性を設定することを忘れないでください)。データが認証に使用されず、アクセス権限にのみ使用される場合、この属性は省略されます。省略した場合、名前空間はランダムな値を生成し、認証のために誤って使用されるのを防ぎます。空にすることはできません。