クラス OidcReactiveOAuth2UserService
java.lang.ObjectSE
org.springframework.security.oauth2.client.oidc.userinfo.OidcReactiveOAuth2UserService
- 実装されたすべてのインターフェース:
ReactiveOAuth2UserService<OidcUserRequest,
OidcUser>
public class OidcReactiveOAuth2UserService
extends ObjectSE
implements ReactiveOAuth2UserService<OidcUserRequest,OidcUser>
OpenID Connect 1.0 プロバイダーをサポートする
ReactiveOAuth2UserService
の実装。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明OidcUserInfo
のクレーム値の型変換に使用されるデフォルトConverter
を返します。reactor.core.publisher.Mono<OidcUser>
loadUser
(OidcUserRequest userRequest) UserInfo エンドポイントからエンドユーザーのユーザー属性を取得した後、OAuth2User
を返します。final void
setClaimTypeConverterFactory
(FunctionSE<ClientRegistration, org.springframework.core.convert.converter.Converter<MapSE<StringSE, ObjectSE>, MapSE<StringSE, ObjectSE>>> claimTypeConverterFactory) OidcUserInfo
のクレーム値の型変換に使用されるConverter
を提供するファクトリを設定します。void
setOauth2UserService
(ReactiveOAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService) final void
setOidcUserMapper
(BiFunctionSE<OidcUserRequest, OidcUserInfo, reactor.core.publisher.Mono<OidcUser>> oidcUserMapper) final void
setRetrieveUserInfo
(PredicateSE<OidcUserRequest> retrieveUserInfo) エンドユーザー (リソース所有者) に関する情報を取得するために UserInfo エンドポイントを呼び出す必要があるかどうかを決定するために使用されるPredicate
を設定します。
コンストラクターの詳細
OidcReactiveOAuth2UserService
public OidcReactiveOAuth2UserService()
メソッドの詳細
createDefaultClaimTypeConverters
public static MapSE<StringSE,org.springframework.core.convert.converter.Converter<ObjectSE, createDefaultClaimTypeConverters()?>> OidcUserInfo
のクレーム値の型変換に使用されるデフォルトConverter
を返します。- 戻り値:
claim name
によってキー設定されたConverter
のMap
SE- 導入:
- 5.2
loadUser
public reactor.core.publisher.Mono<OidcUser> loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException インターフェースからコピーされた説明:ReactiveOAuth2UserService
UserInfo エンドポイントからエンドユーザーのユーザー属性を取得した後、OAuth2User
を返します。- 次で指定:
- インターフェース
ReactiveOAuth2UserService<OidcUserRequest,
のOidcUser> loadUser
- パラメーター:
userRequest
- ユーザーリクエスト- 戻り値:
OAuth2User
- 例外:
OAuth2AuthenticationException
- UserInfo エンドポイントからユーザー属性を取得しようとしてエラーが発生した場合
setOauth2UserService
public void setOauth2UserService(ReactiveOAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService) 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
setRetrieveUserInfo
エンドユーザー (リソース所有者) に関する情報を取得するために UserInfo エンドポイントを呼び出す必要があるかどうかを決定するために使用されるPredicate
を設定します。デフォルトでは、次の条件がすべて満たされる場合に UserInfo エンドポイントが呼び出されます。
- ユーザー情報エンドポイントは ClientRegistration で定義されます
- クライアント登録では
AuthorizationGrantType.AUTHORIZATION_CODE
が使用され、アクセストークンのスコープはClientRegistration
で定義されます。
- パラメーター:
retrieveUserInfo
- UserInfo エンドポイントを呼び出すかどうかを決定するために使用される関数- 導入:
- 6.3
setOidcUserMapper
public final void setOidcUserMapper(BiFunctionSE<OidcUserRequest, OidcUserInfo, reactor.core.publisher.Mono<OidcUser>> oidcUserMapper) user request
およびuser info
からuser
をマップするために使用されるBiFunction
を設定します。これは、アクセストークン自体からユーザーまたは権限をマップする必要がある場合に便利です。例: 認可サーバーがアクセストークンペイロードで認可情報を提供する場合は、次の操作を実行できます。
@Bean public OidcReactiveOAuth2UserService oidcUserService() { var userService = new OidcReactiveOAuth2UserService(); userService.setOidcUserMapper(oidcUserMapper()); return userService; } private static BiFunction<OidcUserRequest, OidcUserInfo, Mono<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 Mono.just(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