認証サービス

これにより、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-manager> の子要素

<authentication-provider>

ref 属性で使用しない限り、この要素は DaoAuthenticationProvider を構成するための略記です。DaoAuthenticationProvider は UserDetailsService からユーザー情報をロードし、ユーザー名 / パスワードの組み合わせをログイン時に提供された値と比較します。UserDetailsService インスタンスは、使用可能な名前空間要素を使用して定義することができます(jdbc-user-service または user-service-ref 属性を使用して、アプリケーションコンテキストの他の場所で定義された Bean を指す)。

<authentication-provider> の親要素

<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> の属性

  • authority-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 は非常に弱いハッシュアルゴリズムであるため、MD4 の使用は強くお勧めします。

  • ref PasswordEncoder を実装する Spring Bean への参照を定義します。

<user-service>

プロパティファイルまたは「ユーザー」子要素のリストからメモリ内 UserDetailsService を作成します。ユーザー名は、大文字と小文字を区別しない検索を可能にするために内部的に小文字に変換されるため、大文字と小文字を区別する必要がある場合は使用しないでください。

<user-service> の属性

  • id Bean 識別子。コンテキストの他の場所で Bean を参照するために使用されます。

  • properties 各行が次の形式であるプロパティファイルの場所

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

<user-service> の子要素

<user>

アプリケーション内のユーザーを表します。

<user> の親要素

<user> 属性

  • authorities ユーザーに付与された 1 つ以上の権限。権限をコンマで区切ります(スペースは入れません)。例: "ROLE_USER、ROLE_ADMINISTRATOR"

  • disabled "true" に設定すると、アカウントを無効かつ使用不可としてマークできます。

  • locked "true" に設定すると、アカウントをロック済みで使用不可としてマークできます。

  • name ユーザーに割り当てられたユーザー名。

  • password ユーザーに割り当てられたパスワード。対応する認証プロバイダーがハッシュをサポートしている場合、これをハッシュすることができます("user-service" 要素の "hash" 属性を設定することを忘れないでください)。データが認証に使用されず、アクセス権限にのみ使用される場合、この属性は省略されます。省略した場合、名前空間はランダムな値を生成し、認証のために誤って使用されるのを防ぎます。空にすることはできません。