web-dev-qa-db-ja.com

キークロークベアラーのみのクライアント:なぜ存在するのですか?

Keycloakのbearer-onlyクライアントの概念に頭を抱えようとしています。

公開vs機密の概念と、サービスアカウントとgrant_type=client_credentialsの概念を理解しています。しかし、bearer-onlyでは、行き詰まっています。

グーグルすると、次のような議論の断片が明らかになります。

bearer-onlyクライアントを使用してキークロークからトークンを取得することはできません。

ドキュメントも不明確です。彼らが言うすべては:

ベアラーのみのアクセスタイプは、アプリケーションがベアラートークンリクエストのみを許可することを意味します。

アプリでベアラートークンリクエストのみを許可している場合、クライアントID /クライアントシークレットを使用してKeycloakから取得できない場合、このトークンを取得するにはどうすればよいですか?

トークンを取得できない場合、何ができますか?なぜこれらのクライアントが存在するのですか?誰かがこのタイプのクライアントの使用例を提供できますか?

10
kurtgn

短い答え:無記名専用クライアントを使用してアクセストークンを取得することはできませんが、無記名専用クライアントが別のクライアントを使用して受け入れることができるアクセストークンを取得することはできます。

詳細情報ベアラのみのクライアントは、フロントアプリケーションによって呼び出され、承認サーバー(=キークローク)によって保護されたWebサービスなどのバックエンドアプリケーションを効果的に表します

バックエンド/ Webサービスアプリケーションはユーザーから直接呼び出されないため、Oauth2.0ユーザーインタラクティブフローで再生できません。 「無記名のみ」のドキュメントをキークロークサーバーに設定すると、管理者は必須の値なしでクライアントを構成でき(例:リダイレクトuri…)、そのようなクライアントのトークンを取得しようとした場合に役立つエラーメッセージが許可されます。

ただし、これは、このクライアントに特定のロールを構成できないことを意味するわけではありません。したがって、キークロークレルムに表示される必要があります。

さらに、無記名専用クライアントは、受信したアクセストークンを確認する必要があります。特に、この(推奨)アダプター機能「verify-token-audience」がアクティブ化されている場合、無記名専用クライアントは、アクセストークンが発行されたことを確認する必要があります。無記名専用クライアントは、アクセストークンのaudience属性に含まれている必要があります。次を参照してください https://www.keycloak.org/docs/latest/server_admin/index.html#_audience

キークロークで管理するオーディエンスの場合、ベアラのみのクライアントをキークロークレルムに登録する必要があります。

0
Thomas LIMIN