2.2. OAuth 2.0 身份验证增强
配置使用者和范围
现在,您可以配置 oauth.audience
和 oauth.scope
属性,并在获取令牌时将其值作为参数传递。这两个属性都在 OAuth 2.0 身份验证侦听器配置中配置。
在以下情况下使用这些属性:
- 获取用于内部代理身份验证的访问令牌时
-
在基于 PLAIN 客户端身份验证的 OAuth 2.0 客户端名称中,使用
clientId
和secret
这些属性会影响客户端是否可以获取令牌和令牌的内容。它们不会影响侦听器实施的令牌验证规则。
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 访问令牌中提供 提示(
严重)声明。当通过设置 oauth.check.audience="true"
启用用户检查时,Kafka 代理将拒绝在其 aud
声明中不包含代理 客户端Id
的令牌。默认情况下禁用受众检查。
请参阅为 Kafka 代理配置 OAuth 2.0 支持 https://access.redhat.com/documentation/en-us/red_hat_amq/2021.q3/html-single/using_amq_streams_on_rhel/index#proc-oauth-broker-config-str
OAuth 2.0 over PLAIN 不需要令牌端点
使用 OAuth 2.0 的 "client ID 和 secret" 方法通过 PLAIN 身份验证时,不再需要 oauth.token.endpoint.uri
参数。
指定了令牌端点 URI 的 OAuth 2.0 over PLAIN 侦听器配置示例
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
,侦听器将处理:
-
用户名
参数作为帐户名称 -
作为原始访问令牌
的密码
参数,传递给授权服务器进行验证(与 OAUTHBEARER 身份验证的作用相同)
OAuth 2.0 与 PLAIN 身份验证相比的"长生命访问令牌"方法的行为没有改变。在使用此方法时,不需要 oauth.token.endpoint.uri
。