ホーム>source

Spring Cloud/Spring BootマイクロサービスをOAuth2で保護していますが、すべてが承認サーバーにうまく接続されているようです。しかし、郵便配達員を介して /oauth/token にPOSTリクエストを送信すると   grant_type = client_credentials でアクセストークンを取得するには  私は次の応答を受け取ります:

{
    "error": "invalid_client",
    "error_description": "Unauthorized grant type: client_credentials"
}

しかし、 oauth_client_details  OAuthクライアントが登録されているデータベーステーブル、私はこの要求を行う現在のクライアントの次のセットアップがあります。

authorized_grant_types = `password, authorization_code, client_credentials, refresh_token`

だから私は自由にSpring Bootのoauthフロー全体をデバッグし、 AbstractTokenGranter.validateGrantType(String grantType, ClientDetails clientDetails) で非常に面白いことが起こっているのを見つけました  方法。以下の図を参照してください。

だから、ここで何が起こっているのかを理解したいと思います。それは私には実際には計り知れないことです。

あなたの答え
  • 解決した方法 # 1

    RDBMSを使用しているようです。 oauth_client_details にクライアントレコードを挿入するとき  テーブル、 authorized_grant_types の値にスペースがないことを確認してください カラム。

    値は次のようになります(コンマの後にスペースはありません):

    'password,client_credentials,refresh_token'
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - Reactコンポーネントがマウントされる前に、Sagaでイベントを監視するにはどうすればよいですか?