1

私は春のブートに新しく、oauth2プロバイダとしてfacebookでoauth2クライアントを実装しようとしています。 @EnableWebSecurityでデフォルトの認証マネージャとカスタムJWTトークンジェネレータを使用して設定された、従来のJWTトークン認証がすでに使用されています。既存のjwt認証システムでFB、Googleなどの他のoauth2プロバイダを使用する方法

  • 上記のシナリオでAuthorizationServerと ResourceServerを構成することは本当に必要ですか?
  • もし私のコードが私に戻ってくるコールバックのコードと状態をfacebookから返すのはなぜですか?

コードhere

+0

facebookのoauthクライアント認証フィルタクライアントを、既存のJWT認証フィルタ設定とマージしようとしました。すべてがうまく動くだけで、アクセストークンではなくフェイスブックからコードが戻ってきています...私はSpringブートで許可タイプをどのように渡すことができるのか分かりませんので、facebookからCODEではなくACCESS TOKENを求めます。 –

答えて

1

のOAuth2 =認証委任プロトコルませ認証一つに見てください。

アイデンティティプロバイダとしてFaceBookとGoogleを使用する場合は、ID連携プロトコル、つまりOpenId Connect(OIDC)を使用する必要があります。

この最後に、oauth2認証レイヤーの上に認証レイヤー(JWT idトークンを使用)を追加します。

春のセキュリティ構成部分についてのあなたの質問(それほど明確ではない)に関しては、現在のoauth2サーバーの実装(AuthorizeServerとResourceServerはその一部です)is not suitable as it is OIDCアイデンティティプロバイダ)

コールバックURLに返されるコードと状態は、oauth2 authorization code flowの一部であり、正常です。次に、取得したコードを、認証サーバートークンエンドポイントを使用してアクセストークンと交換する必要があります。

(状態は、たとえば、テナントIDなどの情報をoauth2全体フローで送信できるようにするためのものです)。

Here実際によく知られているoauth2の軽蔑記事です。

+0

お返事ありがとうございます! と申し訳ありませんがよくコンパイルされた質問です。コードの振る舞いが正常であれば、アクセストークンを取得するためにfacebookに話すためにhttpクライアントを書き直さなければなりません。これは、この通信が春のブートoauthクライアントによって気にされないことを意味しますか? –

+0

私は、Springがコールバック処理(それはおそらくカバーの下で春のMVCなどを使用しています)を含むすべてを処理できると思いますが、私は春のフレームワーク全体、特にWebパーツに対して深い憎しみがあることを認めなければなりません。個人的に私がクライアントとしてoauthを実装するとき、私はちょうどいくつかのサーブレットを設定して、アクセス権トークンの取得を自分自身を古い古いHttpクライアントかapache oltuのような単純なlibを使って処理します。私は本当にここであなたを助けることができない、私は謝罪 – Gab

+0

あなたのコールバックはOauth2AuthController#accessToken()のあなたのコードで既に実装されているようです。しかし、私が知っている限り、アクセストークンに対するコード交換は、コンテンツタイプとしてPOSTとapplication/x-www-form-urlencodedを使用して行わなければなりません。 – Gab

関連する問題