最新の安定バージョンについては、Spring Security 6.4.4 を使用してください! |
OpenID サポート
OpenID 1.0 および 2.0 プロトコルは非推奨になり、ユーザーは spring-security-oauth2 でサポートされている OpenIDConnect に移行することをお勧めします。 |
名前空間は、通常のフォームベースのログインの代わりに、またはそれに加えて、簡単な変更で OpenID (英語) ログインをサポートします。
<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<openid-login />
</http>
次に、OpenID プロバイダー(myopenid.com など)に自分自身を登録し、ユーザー情報をインメモリ <user-service>
に追加する必要があります。
<user name="https://jimi.hendrix.myopenid.com/" authorities="ROLE_USER" />
認証のために myopenid.com
サイトを使用してログインできるはずです。openid-login
要素の user-service-ref
属性を設定することにより、OpenID を使用する特定の UserDetailsService
Bean を選択することもできます。このユーザーデータのセットはユーザーの権限を読み込むためにのみ使用されるため、上記のユーザー構成からパスワード属性を省略していることに注意してください。ランダムなパスワードが内部で生成されるため、このユーザーデータを構成の他の場所で認証ソースとして誤って使用することを防ぎます。
属性交換
OpenID 属性交換 (英語) のサポート。例として、次の構成は、アプリケーションで使用するために、OpenID プロバイダーからメールとフルネームを取得しようとします。
<openid-login>
<attribute-exchange>
<openid-attribute name="email" type="https://axschema.org/contact/email" required="true"/>
<openid-attribute name="name" type="https://axschema.org/namePerson"/>
</attribute-exchange>
</openid-login>
各 OpenID 属性の「型」は、特定のスキーマ(この場合は https://axschema.org/ (英語) )によって決定される URI です。認証を成功させるために属性を取得する必要がある場合、required
属性を設定できます。サポートされる正確なスキーマと属性は、OpenID プロバイダーによって異なります。属性値は認証プロセスの一部として返され、次のコードを使用して後でアクセスできます。
OpenIDAuthenticationToken token =
(OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();
SecurityContextHolder から OpenIDAuthenticationToken
を取得できます。OpenIDAttribute
には、属性型と取得した値 (または複数値属性の場合は値) が含まれます。それぞれに identifier-matcher
属性を使用して、複数の attribute-exchange
要素を指定できます。これには、ユーザーが指定した OpenID 識別子と照合される正規表現が含まれています。Google、Yahoo、MyOpenID プロバイダーのさまざまな属性リストを提供する構成例については、コードベースの OpenID サンプルアプリケーションを参照してください。