client_credentials
許可タイプがリフレッシュトークンシナリオをサポートしていますか?スプリングセキュリティclient_credentials grant_type - リフレッシュトークンのサポート
client_credentials
グラントタイプを使用すると、access_token
の有効期限はどのように処理する必要がありますか?
私は、クライアントアプリケーションからのすべての要求のゲートウェイとして機能するプロキシサービス(Zuul with EnableOAuth2Sso
)の後ろに認証サービスとセキュリティ保護されたサービスを持っています。
- プロキシサービス(zuul)
- Proxyサービスが
client_id
、client_secret
とgrant_type
を掲載することにより、承認サービスAPIを呼び出すクライアントアプリケーションからの要求(残りAPI)を受け付ける(:ここ は、私が持っている流れでありますclient_credentials
)を取得し、access_token
,refresh_token
、応答から有効期限が切れます - プロキシサービスは、zuulルートマッピングに従って保護されたサービスに元の要求をルーティングします。
この流れが正常に動作しますが、ClientCredentialsAccessTokenProvider
のコードを見て、私は「supportsRefresh」戻りfalse
と「refreshToken」メソッドはnull
を返すことに気づきました。これは、access_token
がクライアントアプリケーションからプロキシサービス(zuul)への後続のリクエストの期限が切れると失敗することを意味しますか?
応答に感謝します。いくつかの説明。 1)リソースサーバーと認証サーバーが同じ場所にない可能性があります。2)シナリオでは、リソースサーバーはアクセストークンを取得していません。私たちには、認証サーバーからaccess_tokenを取得し、httpヘッダー内のものをリソースサーバーに中継するゲートウェイサービス(zuul)があります。私の質問は、私たちのプロキシサーバーは常にすべての要求に対して新しいaccess_tokenを取得するか、有効期限が切れたときにのみリフレッシュできるかどうかです。私は後でそれを望んでいたが、ClientCredentialsAccessTokenProviderクラスを見ると、サポートされていないことがわかります。 – rgv
私が考えているもう一つの選択肢は、ゲートウェイサービスでロジック(フィルタ)を実装して、コンテキスト内のaccess_tokenが期限切れになっているかどうかを確認し、クライアントの資格情報(client_idとclient_secret)を使って新しいaccess_tokenを取得することです。 – rgv
@rgvの場合、これらのトークン関連の操作を行うには 'AuthenticationFilter'する必要があります。 – chenrui