2.2. OAuth 2.0 認証の改良
Audience および Scope の設定
oauth. audience および
、トークンの取得時にそれらの値をパラメーターとして渡すことができるようになりました。どちらのプロパティーも OAuth 2.0 認証リスナー設定で指定されます。
oauth.
scope プロパティーを設定し
以下のシナリオで、このプロパティーを使用します。
- ブローカー間認証用のアクセストークンを取得する場合
-
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 ブローカー設定」を参照してください。