クラス 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 の実装。
導入:
5.1
関連事項:
  • コンストラクターの詳細

    • OidcReactiveOAuth2UserService

      public OidcReactiveOAuth2UserService()
  • メソッドの詳細

    • createDefaultClaimTypeConverters

      public static MapSE<StringSE,org.springframework.core.convert.converter.Converter<ObjectSE,?>> createDefaultClaimTypeConverters()
      OidcUserInfo のクレーム値の型変換に使用されるデフォルト Converter を返します。
      戻り値:
      claim name によってキー設定された ConverterMapSE
      導入:
      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 を提供するファクトリを設定します。デフォルトは、すべての clientsClaimTypeConverter です。
      パラメーター:
      claimTypeConverterFactory - 特定の client のクレーム値の型変換に使用される Converter を提供するファクトリ
      導入:
      5.2
    • setRetrieveUserInfo

      public final void setRetrieveUserInfo(PredicateSE<OidcUserRequest> retrieveUserInfo)
      エンドユーザー (リソース所有者) に関する情報を取得するために UserInfo エンドポイントを呼び出す必要があるかどうかを決定するために使用される Predicate を設定します。

      デフォルトでは、次の条件がすべて満たされる場合に UserInfo エンドポイントが呼び出されます。

      パラメーター:
      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 が作成されます。

      パラメーター:
      oidcUserMapper - OidcUserOidcUserRequestOidcUserInfo からマッピングするために使用される関数
      導入:
      6.3