2.2. OAuth 2.0 身份验证增强


配置使用者和范围

现在,您可以配置 oauth.audienceoauth.scope 属性,并在获取令牌时将其值作为参数传递。这两个属性都在 OAuth 2.0 身份验证侦听器配置中配置。

在以下情况下使用这些属性:

  • 获取用于内部代理身份验证的访问令牌时
  • 在基于 PLAIN 客户端身份验证的 OAuth 2.0 客户端名称中,使用 clientIdsecret

这些属性会影响客户端是否可以获取令牌和令牌的内容。它们不会影响侦听器实施的令牌验证规则。

oauth.audienceoauth.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

请参阅 OAuth 2.0 Kafka 代理配置

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.