Keycloakパブリッククライアントと認証

Numerouno:

私たちは、Keycloakを使用して認証および承認のための桟橋でkeycloak-アダプタを使用しています。あたりとしてOIDC認証フローのKeycloakドキュメント

もう一つの重要なこのフローの側面は、の概念である機密対パブリッククライアント。秘密のクライアントは、彼らがトークンのための一時的なコードを交換する際に、クライアントの秘密を提供する必要があります。公共のクライアントは、このクライアントの秘密を提供する必要はありません。HTTPSを厳密に施行されるなどの公共のクライアントは限り細かい完璧であり、あなたは、クライアントのために登録されているものをリダイレクトURIに関する非常に厳しいです。

安全な方法でそれらにクライアントシークレットを送信する方法がないので、HTML5 / JavaScriptのクライアントは、常に公共のクライアントでなければなりません。

私たちは、桟橋と使用AUTHに接続するWebアプリケーションを持っています。そこで、我々は公共のクライアントを作成して、それがWebアプリケーション/ REST認証のための素晴らしい作品。
問題はすぐに我々は許可をイネーブルとして、クライアントの種類が公開から秘密に変換されるようになり、それは公共のようにリセットにそれを許可していません。今、私たちはスープです。私たちは、原因の認可に公共のクライアントを持つことができないと、私たちは、機密クライアントに接続Webアプリケーションをすることはできません。
これは、私たちに矛盾するように思われます。クライアントは、認可のために機密にする必要がある理由を任意のアイデア?この方法上の任意のヘルプは、私たちは、この問題を克服することができますか?
ありがとうございました。

maslick:

私の知る限り理解されるように、あなたはあなたのフロントエンドとバックエンドのアプリケーションを分離できます。あなたのフロントエンドは、静的なウェブアプリで、同じバックエンド・アプリケーション(サーバー)によって提供されていない、とあなたのバックエンドは、単純なのRESTのAPIである場合 - あなたは2つのKeycloakクライアントが設定されています:

  • publicフロントエンドアプリケーションのためのクライアント。これは、JWTトークンを取得するための責任を負うことになります。
  • bearer-only バックエンドアプリケーションに添付されるだろうクライアント、。

認証を有効にするには、(それが理解する方が簡単ですと、レルムレベルで開始し、スコープのいずれかのレルムまたはクライアント)の役割を作成します。すべてのユーザは、そのロールが割り当てられます/ Keycloakの管理UIでね。これに基づき、あなたは(バックエンドで)あなたのkeycloakアダプタ設定を構成する必要があります。

あなたのREST APIに話するために、あらゆることを考慮、あなたはAuthorizationヘッダ内の各HTTPリクエストにトークンJWTを添付します。あなたのフロントエンドフレームワークに応じて、これらのいずれかを使用できます。

私はちょうどと呼ばれるCLIツール書かれているデバッグのためにPS brauzieあなたのJWTトークン(スコープ、役割など)を取得し、分析するのに役立つでしょう。これは、公開鍵と秘密のクライアントの両方を使用することができます。あなたにも使用することができますポストマンをしてhttps://jwt.io

HTH :)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=168432&siteId=1