根据本文档, 我已为客户端和代理之间以及代理间的所有通信启用 SSL 身份验证。
对于使用 ACL 的授权,文档中已经提到使用 SSL 身份验证时的默认主体名称,默认 SSL 用户名将采用以下形式CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown,要修改它,我们需要设置一个principal.builder.class=CustomizedPrincipalBuilderClass.
我想获得有关如何实现新的 PrincipalBuilderClass 并使用该类提供 SSL 用户名的帮助CN+OU。任何显示上述示例实现的文章也有效。
在此先感谢您的帮助!
对于自定义的PrincipalBuilder,您需要实现KafkaPrincipalBuilder类。在该类中,您需要实现build基本上返回KafkaPrincipal实例的方法。
对于示例实现,您可以按照以下步骤操作:https: //github.com/kafka-security/oauth/blob/master/kafka-oauth/src/main/java/com/bfm/kafka/security/oauthbearer/CustomPrincipalBuilder。爪哇
我正在复制代码的摘录,以防将来它被删除/移动,
public class CustomPrincipalBuilder implements KafkaPrincipalBuilder {
@Override
public CustomPrincipal build(AuthenticationContext authenticationContext) throws KafkaException{
try {
CustomPrincipal customPrincipal;
if (authenticationContext instanceof SaslAuthenticationContext) {
SaslAuthenticationContext context = (SaslAuthenticationContext) authenticationContext;
OAuthBearerTokenJwt token = (OAuthBearerTokenJwt) context.server()
.getNegotiatedProperty("OAUTHBEARER.token");
customPrincipal = new CustomPrincipal("User", token.principalName());
customPrincipal.setOauthBearerTokenJwt(token);
return customPrincipal;
} else {
throw new KafkaException("Failed to build CustomPrincipal. SaslAuthenticationContext is required.");
}
} catch (Exception ex) {
throw new KafkaException("Failed to build CustomPrincipal due to: ", ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述示例用于SASL OAUTHBEARER身份验证/授权目的。但您可以使用任何您想要的机制。
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |