4.10.3. Kafka 代理的会话重新身份验证
您可以配置 OAuth 侦听程序,为 Kafka 客户端和 Kafka 代理之间的 OAuth 2.0 会话使用 Kafka 会话 重新身份验证。这种机制强制客户端与代理之间经过身份验证的会话在指定时间段后到期。会话过期时,客户端将通过重复使用现有连接而不是丢弃它来立即启动新会话。
会话重新身份验证默认为禁用。您可以在 server.properties
文件中启用它。为启用了 OAUTHBEARER 或 PLAIN 机制的 TLS 监听程序设置 connections.max.reauth.ms
属性。
您可以为每个监听程序指定会话重新身份验证。例如:
listener.name.client.oauthbearer.connections.max.reauth.ms=3600000
客户端使用的 Kafka 客户端库必须支持会话重新身份验证。
会话重新身份验证可用于 快速本地 JWT 或 内省端点 令牌验证。
客户端重新身份验证
当代理经过身份验证的会话过期时,客户端必须通过向代理发送新的有效访问令牌来重新验证现有会话,而不丢弃连接。
如果令牌验证成功,则利用现有连接启动新的客户端会话。如果客户端无法重新验证,代理会在进一步尝试发送或接收消息时关闭连接。如果在代理中启用了重新身份验证机制,使用 Kafka 客户端库 2.2 或更高版本的 Java 客户端会自动重新验证。
会话重新身份验证也适用于刷新令牌(若使用)。会话过期时,客户端使用刷新令牌刷新访问令牌。然后,客户端使用新的访问令牌重新通过现有连接进行身份验证。
OAUTHBEARER 和 PLAIN 的会话过期
当配置会话重新身份验证时,会话过期适用于 OAUTHBEARER 和 PLAIN 身份验证的不同。
对于 OAUTHBEARER 和 PLAIN,请使用 客户端 ID 和 secret 方法:
-
代理通过身份验证的会话将在配置
connections.max.reauth.ms
时过期。 - 如果访问令牌在配置的时间之前过期,会话将更早过期。
对于 PLAIN 使用 长期访问令牌 方法:
-
代理通过身份验证的会话将在配置
connections.max.reauth.ms
时过期。 - 如果访问令牌在配置的时间之前过期,则重新身份验证会失败。虽然尝试重新身份验证会话,但 PLAIN 没有刷新令牌的机制。
如果没有 配置 connections.max.reauth.ms
,OAUTHBEARER 和 PLAIN 客户端可以无限期地保持连接到代理,而无需重新验证。经过身份验证的会话不以访问令牌到期结尾。但是,在配置授权时需要考虑这一点,例如使用 keycloak
授权或安装自定义授权器。