12.3. 主体构建器
您可以在 Kafka 集群配置中设置自定义主体构建器。但是,主体构建器有以下要求:
- 镜像上必须存在指定的主体构建器类。在自己构建之前,请检查是否已存在。您需要使用所需类重建 AMQ Streams 镜像。
-
没有其他监听程序使用
oauth类型身份验证。这是因为 OAuth 侦听器将自己的原则构建器附加到 Kafka 配置中。 - 指定主体构建器与 AMQ Streams 兼容。
自定义主体构建器必须支持用于身份验证的对等证书,因为 AMQ Streams 使用它们来管理 Kafka 集群。
注意
Kafka 的默认主体构建器类 支持根据对等证书的名称构建主体。自定义主体构建器应使用 SSL peer 证书的名称提供类型为 user 的主体。
以下示例显示了满足 AMQ Streams 的 OAuth 要求的自定义主体构建器。
自定义 OAuth 配置的主体构建器示例
public final class CustomKafkaPrincipalBuilder implements KafkaPrincipalBuilder {
public KafkaPrincipalBuilder() {}
@Override
public KafkaPrincipal build(AuthenticationContext context) {
if (context instanceof SslAuthenticationContext) {
SSLSession sslSession = ((SslAuthenticationContext) context).session();
try {
return new KafkaPrincipal(
KafkaPrincipal.USER_TYPE, sslSession.getPeerPrincipal().getName());
} catch (SSLPeerUnverifiedException e) {
throw new IllegalArgumentException("Cannot use an unverified peer for authentication", e);
}
}
// Create your own KafkaPrincipal here
...
}
}