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