2.2. OAuth 2.0 認証の改良

Audience および Scope の設定

oauth. audience および oauth. scope プロパティーを設定し、トークンの取得時にそれらの値をパラメーターとして渡すことができるようになりました。どちらのプロパティーも OAuth 2.0 認証リスナー設定で指定されます。

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

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

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

oauth.audience および oauth.scope プロパティーの設定例

listener.name.client.oauthbearer.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \
  # ...
  oauth.token.endpoint.uri="https://AUTH-SERVER-ADDRESS/auth/realms/REALM-NAME/protocol/openid-connect/token" \
  oauth.scope=""SCOPE"" \
  oauth.audience="AUDIENCE" \
  oauth.check.audience="true" \
  # ...

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

「Kafka ブローカーの OAuth 2.0 サポートの設定」を参照してください。

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

oauth.token.endpoint.uri パラメーターは、OAuth 2.0 over PLAIN 認証に「クライアント ID および secret」メソッドを使用する場合に不要になりました。

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

listener.name.client.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  oauth.valid.issuer.uri="https://__AUTH-SERVER-ADDRESS__" \
  oauth.jwks.endpoint.uri="https://__AUTH-SERVER-ADDRESS__/jwks" \
  oauth.username.claim="preferred_username"  \
  oauth.token.endpoint.uri="http://__AUTH_SERVER__/auth/realms/__REALM__/protocol/openid-connect/token" ;

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

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

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

「OAuth 2.0 Kafka ブローカー設定」を参照してください。