14.7. クライアント認証


認可クライアントがバックチャネル要求を送信する必要がある場合、Red Hat build of Keycloak サーバーに対して認証する必要があります。デフォルトでは、クライアント ID およびクライアントシークレット、署名済み JWT によるクライアント認証、またはクライアントシークレットを使用した署名済み JWT によるクライアント認証の 3 つの方法があります。

14.7.1. クライアント ID およびクライアントシークレット

これは、OAuth2 仕様で説明されている従来の方法です。クライアントにはシークレットがあり、そのシークレットはクライアントと Red Hat build of Keycloak サーバーの両方に知られている必要があります。Red Hat build of Keycloak 管理コンソールで特定のクライアントのシークレットを生成し、このシークレットをアプリケーション側の keycloak.json ファイルに貼り付けることができます。

"credentials": {
    "secret": "19666a4f-32dd-4049-b082-684c74115f28"
}

14.7.2. 署名済み JWT によるクライアント認証

これは RFC7523 の仕様に基づいています。これは、以下のように動作します。

  • クライアントには、秘密鍵と証明書が必要です。認可クライアントの場合、これは従来の keystore ファイルを通じて利用できます。このファイルは、クライアントアプリケーションのクラスパスまたはファイルシステム上からアクセスできます。
  • 認証中に、クライアントは JWT トークンを生成し、秘密鍵で署名して、client_assertion パラメーターの特定のリクエストで Red Hat build of Keycloak に送信します。
  • Red Hat build of Keycloak には、JWT の署名を検証できるように、クライアントの公開鍵または証明書が必要です。Red Hat build of Keycloak では、クライアントのクライアント認証情報を設定します。まず、管理コンソールの Credentials タブで、クライアントの認証方法として Signed JWT を選択します。次に、Keys タブで次のいずれかの方法を選択できます。

    • Red Hat build of Keycloak がクライアントの公開鍵をダウンロードできる JWKS URL を設定します。このオプションは、クライアントがいつでもキーをローテーションでき、Red Hat build of Keycloak が設定を変更せずに必要に応じて常に新しいキーをダウンロードするため、最も柔軟性があります。つまり、Red Hat build of Keycloak は、未知の kid (Key ID) によって署名されたトークンを検出すると、新しいキーをダウンロードします。ただし、公開鍵を JWKS 形式でどこかに公開し、サーバーで利用できるようにするには注意が必要です。
    • クライアントの公開鍵または証明書を、PEM 形式、JWK 形式、またはキーストアからアップロードします。このオプションを使用すると、公開鍵はハードコーディングされ、クライアントが新しいキーペアを生成する際に変更する必要があります。独自のキーストアが利用できない場合は、Red Hat build of Keycloak の管理コンソールから独自のキーストアを生成することもできます。このオプションは、認可クライアントを使用する場合に最も簡単です。

この方法をセットアップするには、keycloak.json ファイルに次のようなコードを記述する必要があります。

"credentials": {
  "jwt": {
    "client-keystore-file": "classpath:keystore-client.jks",
    "client-keystore-type": "JKS",
    "client-keystore-password": "storepass",
    "client-key-password": "keypass",
    "client-key-alias": "clientkey",
    "token-expiration": 10
  }
}

この設定では、認可クライアントを使用するアプリケーションのクラスパスでキーストアファイル keystore-client.jks が使用可能である必要があります。接頭辞 classpath: を使用しない場合は、クライアントアプリケーションが実行しているファイルシステム上の任意のファイルを指定できます。

14.7.3. クライアントシークレットを使用した署名済み JWT によるクライアント認証

これは、秘密鍵と証明書の代わりにクライアントシークレットを使用することを除いて、署名された JWT を使用したクライアント認証と同じです。

クライアントにはシークレットがあり、これは認可クライアントを使用するアプリケーションと Red Hat build of Keycloak サーバーの両方に知られている必要があります。管理コンソールの Credentials タブでクライアントの認証方法として Signed JWT with Client Secret を選択し、このシークレットをアプリケーション側の keycloak.json ファイルに貼り付けます。

"credentials": {
  "secret-jwt": {
    "secret": "19666a4f-32dd-4049-b082-684c74115f28",
    "algorithm": "HS512"
  }
}

"algorithm" フィールドは、クライアントシークレットを使用して署名済み JWT のアルゴリズムを指定します。次のいずれかの値である必要があります: HS256、HS384、および HS512。詳細は、JSON Web Algorithms (JWA) を参照してください。

この "algorithm" フィールドはオプションです。keycloak.json ファイルに "algorithm" フィールドが存在しない場合は、HS256 が自動的に適用されます。

14.7.4. 独自のクライアント認証方法を追加する

独自のクライアント認証方法を追加することもできます。クライアント側プロバイダーとサーバー側プロバイダーの両方を実装する必要があります。詳細は、サーバー開発者ガイド認証 SPI セクションを参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る