最新の安定バージョンについては、Spring Security 6.3.1 を使用してください!

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 サンプルアプリケーションを参照してください。