2.4. OAuth 2.0 身份验证和授权


此发行版本包括对基于 OAuth 2.0 令牌的身份验证和授权的以下增强。

会话重新身份验证

AMQ Streams 中的 OAuth 2.0 身份验证现在支持 Kafka 代理的 会话重新身份验证。这定义了 Kafka 客户端和 Kafka 代理之间经过身份验证的 OAuth 2.0 会话的最长持续时间。会话重新身份验证支持两种类型的令牌验证:快速本地 JWT 和内省端点。

您可以在 server.properties 文件中为 Kafka 代理的 OAuth 2.0 配置中配置会话重新身份验证。

  • 要应用到所有监听器,请以毫秒为单位设置 connection.max.reauth.ms 属性。
  • 要应用到特定的监听程序,请设置 listen .name.LISTENER-NAME. oauthbearer.connections.max.reauth.ms 属性(毫秒)。LISTENER-NAME 是监听器不区分大小写的名称。

如果经过身份验证的会话超过配置的最大会话重新身份验证时间,或者达到访问令牌到期时间,则会关闭该会话。然后,客户端必须再次登录到授权服务器,获取新的访问令牌,然后重新身份验证到 Kafka 代理。这将在现有连接上创建一个新的经过身份验证的会话。

当下次需要重新身份验证时,客户端尝试的任何操作(不包括重新身份验证)将导致代理终止连接。

会话重新验证的监听程序在 6 分钟后配置示例

sasl.enabled.mechanisms=OAUTHBEARER
listeners=CLIENT://0.0.0.0:9092
# ...
listener.name.client.oauthbearer.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \
  oauth.valid.issuer.uri="https://AUTH-SERVER-ADDRESS" \
  oauth.jwks.endpoint.uri="https://AUTH-SERVER-ADDRESS/jwks" \
  oauth.username.claim="preferred_username"  \
  oauth.client.id="kafka-broker" \
  oauth.client.secret="kafka-secret" \
  oauth.token.endpoint.uri="https://AUTH-SERVER-ADDRESS/token" ;
listener.name.client.oauthbearer.sasl.login.callback.handler.class=io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler
listener.name.client.oauthbearer.connections.max.reauth.ms=3600000
Copy to Clipboard

请参阅:Kafka 代理的 会话重新身份验证以及 配置 Kafka 代理的 OAuth 2.0 支持。

JWKS 密钥刷新间隔

将 Kafka 代理配置为使用快速本地 JWT 令牌验证时,您现在可以在监听器配置中设置 oauth.jwks.refresh.min.pause.seconds 选项(在 server.properties 文件中)。这会定义代理尝试刷新授权服务器发布的 JSON Web 密钥集(JWKS)公钥尝试之间的最小间隔。

在这个版本中,如果 Kafka 代理检测到未知签名密钥,它会尝试立即刷新 JWKS 密钥并忽略常规刷新计划。

尝试刷新 JWKS 密钥之间暂停 2 分钟的示例

listener.name.client.oauthbearer.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \
  oauth.valid.issuer.uri="https://AUTH-SERVER-ADDRESS" \
  oauth.jwks.endpoint.uri="https://AUTH-SERVER-ADDRESS/jwks" \
  oauth.jwks.refresh.seconds="300" \
  oauth.jwks.refresh.min.pause.seconds="120" \
  # ...
  oauth.ssl.truststore.type="PKCS12" ;
Copy to Clipboard

JWKS 密钥刷新调度在 oauth.jwks.refresh.seconds 选项中设置。当遇到未知的签名密钥时,会在刷新计划外调度 JWKS 密钥刷新。刷新将等到上次刷新达到 oauth.jwks.refresh.min.pause.seconds 中指定的间隔后才会开始。默认值为:1

请参阅 为 Kafka 代理配置 OAuth 2.0 支持

从 Red Hat Single Sign-On 刷新授权

通过红帽单点登录,为基于 OAuth 2.0 令牌的授权添加了新的配置选项。在配置 Kafka 代理时,现在可以定义以下与从 Red Hat SSO 授权服务刷新授权相关的选项:

  • strimzi.authorization.grants.refresh.period.seconds:连续两次的时间允许刷新运行。默认值为 60。如果设置为 0 或以下,则禁用刷新授权。
  • strimzi.authorization.grants.refresh.pool.size:可以获取的线程数并行为活动会话授予。默认值为 5

请参阅 使用基于 OAuth 2.0 令牌的授权和 配置 OAuth 2.0 授权支持

在 Red Hat Single Sign-On 中检测权限更改

在这个版本中,KeycloakRBACAuthorizer (红帽 SSO)授权会定期检查活动会话的权限更改。现在,可以实时检测中央用户和权限管理更改。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat