web-dev-qa-db-ja.com

Spring Security 5ではauthorizationGrantTypeをnullにすることはできませんOAuthクライアントとSpring Boot 2.0

Spring Security 5.0の公式リファレンスドキュメントとサンプルコード oauth2login に従ってプロジェクトでOAuth2/OIDC認証をセットアップしましたが、失敗し、mvn spring-boot:runでアプリケーションを起動したときに次の例外が発生しました。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' 
defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientRegistrationRepositoryConfiguration.class]: 
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: 
Factory method 'clientRegistrationRepository' threw exception; 
nested exception is Java.lang.IllegalArgumentException: authorizationGrantType cannot be null

私はSpring Bootが提供するデフォルトの構成を使用していて、spring-security-configspring-security-oauth2-clientspring-security-oauth2-jsoeなどのいくつかの基本的な依存関係をプロジェクトに追加しました。

更新:

理由を見つけましたGitlabなどのカスタムOAuth2プロバイダーの場合、追加する必要があります付与タイプredirectUritemplatescopeclientNameなどですが、OpenID Connect仕様には構成エンドポイントプロトコルがあります。例: https://gitlab.com/.well-known/openid-configuration 、Spring Securityでこれらの情報を自動的に読み取るようにすることは可能ですか?

8
Hantsy

上記のOPの更新について詳しく説明すると、元のエラーを解決するためにapplication.yamlに含める必要があるプロパティは次のとおりで、この場合はAzure ADの場合(これはSpring Security 5でのみ機能し、Spring Security OAuth2では機能しないことに注意してください) 2.xの機能は マージされる 直接Spring Security 5)にあります):

spring:
  security:
    oauth2:
      client:
        registration:
          Microsoft:
            client-id: a935ba7b-6aa4-4b0c-9e84-04f9acaa477b
            client-secret: redacted
            authorization-grant-type: authorization_code
            redirect-uri-template: '{baseUrl}/login/oauth2/code/{registrationId}'
            scope: User.Read
            client-name: Microsoft
            client-alias: Microsoft
        provider:
          Microsoft:
            authorization-uri: https://login.microsoftonline.com/common/oauth2/authorize?resource=https://graph.Microsoft.com/
            token-uri: https://login.microsoftonline.com/common/oauth2/token
            user-info-uri: https://graph.Microsoft.com/v1.0/me
            user-name-attribute: sub
            jwk-set-uri: https://login.microsoftonline.com/common/discovery/keys
12
Stewart Adam

springBoot v2.2.1を使用する場合は、redirect-uri-templateではなく、redirect-uriを使用してください。

8
Arpeet

redirect-uri-template-> redirect-uri機能しますSpringBoot 2.2.0.RELEASE

しかし、それはredirect-uri-templateで春2.1.xで動作します

3
SangHyouk Jin