Kafka 클러스터 구성에서 사용자 정의 주체 빌더를 설정할 수 있습니다. 그러나 기본 빌더에는 다음 요구 사항이 적용됩니다.
지정된 보안 주체 빌더 클래스가 이미지에 있어야 합니다. 직접 빌드하기 전에 이미 있는지 확인하십시오. 필요한 클래스를 사용하여 AMQ Streams 이미지를 다시 빌드해야 합니다.
다른 리스너에서 oauth 유형 인증을 사용하지 않습니다. OAuth 리스너가 Kafka 구성에 자체 원칙 빌더를 추가하기 때문입니다.
지정된 보안 주체 빌더는 AMQ Streams와 호환됩니다.
AMQ Streams는 Kafka 클러스터를 관리하는 데 사용하므로 사용자 정의 주체 빌더는 인증을 위해 피어 인증서를 지원해야 합니다.
참고
Kafka의 기본 주체 빌더 클래스는 피어 인증서의 이름을 기반으로 하는 주체 빌드를 지원합니다. 사용자 정의 보안 주체 빌더에서는 SSL 피어 인증서의 이름을 사용하여 type 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
...
}
}
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
...
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow