クラス OidcUserService
java.lang.ObjectSE
org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService
- 実装されたすべてのインターフェース:
OAuth2UserService<OidcUserRequest,
OidcUser>
public class OidcUserService
extends ObjectSE
implements OAuth2UserService<OidcUserRequest,OidcUser>
OpenID Connect 1.0 プロバイダーをサポートする
OAuth2UserService
の実装。コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明OidcUserInfo
のクレーム値の型変換に使用されるデフォルトConverter
を返します。loadUser
(OidcUserRequest userRequest) UserInfo エンドポイントからエンドユーザーのユーザー属性を取得した後、OAuth2User
を返します。final void
setAccessibleScopes
(SetSE<StringSE> accessibleScopes) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。final void
setClaimTypeConverterFactory
(FunctionSE<ClientRegistration, org.springframework.core.convert.converter.Converter<MapSE<StringSE, ObjectSE>, MapSE<StringSE, ObjectSE>>> claimTypeConverterFactory) OidcUserInfo
のクレーム値の型変換に使用されるConverter
を提供するファクトリを設定します。final void
setOauth2UserService
(OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService) ユーザー情報リソースをリクエストするときに使用されるOAuth2UserService
を設定します。final void
setOidcUserMapper
(BiFunctionSE<OidcUserRequest, OidcUserInfo, OidcUser> oidcUserMapper) final void
setRetrieveUserInfo
(PredicateSE<OidcUserRequest> retrieveUserInfo) エンドユーザー (リソース所有者) に関する情報を取得するために UserInfo エンドポイントを呼び出す必要があるかどうかを決定するために使用されるPredicate
を設定します。
コンストラクターの詳細
OidcUserService
public OidcUserService()
メソッドの詳細
createDefaultClaimTypeConverters
public static MapSE<StringSE,org.springframework.core.convert.converter.Converter<ObjectSE, createDefaultClaimTypeConverters()?>> OidcUserInfo
のクレーム値の型変換に使用されるデフォルトConverter
を返します。- 戻り値:
claim name
によってキー設定されたConverter
のMap
SE- 導入:
- 5.2
loadUser
インターフェースからコピーされた説明:OAuth2UserService
UserInfo エンドポイントからエンドユーザーのユーザー属性を取得した後、OAuth2User
を返します。- 次で指定:
- インターフェース
OAuth2UserService<OidcUserRequest,
のOidcUser> loadUser
- パラメーター:
userRequest
- ユーザーリクエスト- 戻り値:
OAuth2User
- 例外:
OAuth2AuthenticationException
- UserInfo エンドポイントからユーザー属性を取得しようとしてエラーが発生した場合
setOauth2UserService
public final void setOauth2UserService(OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService) ユーザー情報リソースをリクエストするときに使用されるOAuth2UserService
を設定します。- パラメーター:
oauth2UserService
- ユーザー情報リソースをリクエストするときに使用されるOAuth2UserService
。- 導入:
- 5.1
setClaimTypeConverterFactory
public final void setClaimTypeConverterFactory(FunctionSE<ClientRegistration, org.springframework.core.convert.converter.Converter<MapSE<StringSE, ObjectSE>, MapSE<StringSE, ObjectSE>>> claimTypeConverterFactory) OidcUserInfo
のクレーム値の型変換に使用されるConverter
を提供するファクトリを設定します。デフォルトは、すべてのclients
のClaimTypeConverter
です。- パラメーター:
claimTypeConverterFactory
- 特定のclient
のクレーム値の型変換に使用されるConverter
を提供するファクトリ- 導入:
- 5.2
setAccessibleScopes
@DeprecatedSE(since="6.3", forRemoval=true) public final void setAccessibleScopes(SetSE<StringSE> accessibleScopes) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。代わりにsetRetrieveUserInfo(Predicate)
を使用してくださいユーザー情報リソースへのアクセスを許可するスコープを設定します。デフォルトはprofile
、email
、address
およびphone
です。スコープは、access token
に関連付けられた「許可された」スコープに対してチェックされ、ユーザー情報リソースにアクセスできるかどうかが判別されます。少なくとも 1 つの一致がある場合、ユーザー情報リソースがリクエストされますが、そうでない場合はリクエストされません。- パラメーター:
accessibleScopes
- ユーザー情報リソースへのアクセスを許可するスコープ- 導入:
- 5.2
setRetrieveUserInfo
エンドユーザー (リソース所有者) に関する情報を取得するために UserInfo エンドポイントを呼び出す必要があるかどうかを決定するために使用されるPredicate
を設定します。デフォルトでは、次の条件がすべて満たされる場合に UserInfo エンドポイントが呼び出されます。
- ユーザー情報エンドポイントは ClientRegistration で定義されます
- クライアント登録には
AuthorizationGrantType.AUTHORIZATION_CODE
を使用します - アクセストークンには、UserInfo エンドポイント (
profile
、email
、address
、phone
) へのアクセスが許可された 1 つ以上のスコープが含まれています。または、アクセストークンのスコープが空です。
- パラメーター:
retrieveUserInfo
- UserInfo エンドポイントを呼び出すかどうかを決定するために使用される関数- 導入:
- 6.3
setOidcUserMapper
public final void setOidcUserMapper(BiFunctionSE<OidcUserRequest, OidcUserInfo, OidcUser> oidcUserMapper) user request
およびuser info
からuser
をマップするために使用されるBiFunction
を設定します。これは、アクセストークン自体からユーザーまたは権限をマップする必要がある場合に便利です。例: 認可サーバーがアクセストークンペイロードで認可情報を提供する場合は、次の操作を実行できます。
@Bean public OidcUserService oidcUserService() { var userService = new OidcUserService(); userService.setOidcUserMapper(oidcUserMapper()); return userService; } private static BiFunction<OidcUserRequest, OidcUserInfo, OidcUser> oidcUserMapper() { return (userRequest, userInfo) -> { var accessToken = userRequest.getAccessToken(); var grantedAuthorities = new HashSet<GrantedAuthority>(); // TODO: Map authorities from the access token var userNameAttributeName = "preferred_username"; return new DefaultOidcUser( grantedAuthorities, userRequest.getIdToken(), userInfo, userNameAttributeName ); }; }
次のように、
ClientRegistration
経由でuserNameAttributeName
にアクセスできることに注意してください。var userNameAttributeName = userRequest.getClientRegistration() .getProviderDetails() .getUserInfoEndpoint() .getUserNameAttributeName();
デフォルトでは、次のように権限がマップされた
DefaultOidcUser
が作成されます。OidcUserAuthority
は、OidcIdToken
とOidcUserInfo
からOIDC_USER
の権限で作成されます。- 追加の
authorities
は、SCOPE_
のプレフィックスを持つaccess token scopes
からマッピングされます。
- パラメーター:
oidcUserMapper
-OidcUser
をOidcUserRequest
とOidcUserInfo
からマッピングするために使用される関数- 導入:
- 6.3
setRetrieveUserInfo(Predicate)
を使用してください