3.5. OAuth 2.0 認証の改良

Audience および Scope の設定

承認サーバーからトークンを取得する際に、clientAudience および clientScope プロパティーを設定できるようになりました。プロパティーの値は、audience および scope パラメーターとしてトークンエンドポイントに渡されます。どちらのプロパティーも、Kafka カスタムリソースの OAuth 2.0 認証リスナー設定で設定されます。

以下のシナリオで、このプロパティーを使用します。

  • ブローカー間認証用のアクセストークンを取得する場合
  • clientId およびシークレットを使用した OAuth 2.0 over PLAIN クライアント認証のクライアントの名前

    具体的には、アクセストークンを取得するために、PLAIN コールバックが承認サーバーで最初に clientID (ユーザー名として) と secret (パスワードとして) を変換した場合に、audience および scope をリクエストに含めることができるようになりました。

これらのプロパティーは、クライアントがトークンとトークンのコンテンツを取得できるかどうかに影響します。リスナーによって課されるトークン検証ルールには影響を与えません。

client Audience および client Scope プロパティーの設定例

# ...
  authentication:
    type: oauth
    # ...
    clientAudience: AUDIENCE
    clientScope: SCOPE

承認サーバーは、JWT アクセストークンで aud (audience) クレームを提供することがあります。オーディエンスチェックが有効な場合、Kafka ブローカーは aud クレームにブローカーの clientId が含まれていないトークンを拒否します。オーディエンスチェックを有効にするには、oauth リスナー設定で checkAudience オプションを true に設定します。オーディエンスチェックはデフォルトで無効になっています。

Configuring OAuth 2.0 support for Kafka brokers」および「KafkaListenerAuthenticationOAuth schema reference」を参照してください。

Kafka Connect および Kafka Bridge へのaudienceの指定

それぞれのカスタムソースで、Kafka Connect または Kafka Bridge の OAuth クライアント認証を設定するときに、audience オプションを指定できるようになりました。これまでのリリースでは、これらのリソースに対して scope オプションのみがサポートされていました。

KafkaClientAuthenticationOAuth schema reference」を参照してください。

OAuth 2.0 over PLAIN でトークンエンドポイントを必要としない

OAuth 2.0 の PLAIN 認証に「クライアント ID および secret」メソッドを使用する場合に、The tokenEndpointUri オプションが不要になりました。

トークンエンドポイント URI が指定された OAuth 2.0 over PLAIN の 設定例

# ...
  authentication:
    type: oauth
    # ...
    enablePlain: true
    tokenEndpointUri: https://OAUTH-SERVER-ADDRESS/auth/realms/external/protocol/openid-connect/token

tokenEndpointUri が指定されていない場合、リスナーは以下を処理します。

  • username パラメーターをアカウント名として。
  • password パラメーターを検証のために承認サーバーに渡される raw アクセストークンとして (OAUTHBEARER 認証の場合と同じ動作)。

OAuth 2.0 over PLAIN 認証の「long-lived access token」メソッドの動作は変更されません。このメソッドを使用する場合は The tokenEndpointUri は必要ありません。

OAuth 2.0 authentication mechanisms」を参照してください。