Class KeycloakAuthorizer
java.lang.Object
io.strimzi.kafka.oauth.server.authorizer.KeycloakAuthorizer
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.kafka.common.Configurable,org.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer,org.apache.kafka.server.authorizer.Authorizer
public class KeycloakAuthorizer
extends Object
implements org.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
An authorizer using Keycloak Authorization Services that supports KRaft mode.
In KRaft mode multiple instances of this class can be instantiated, and each needs its own instance of StandardAuthorizer for
delegating authorization to Kafka ACL implementation.
This authorizer automatically sets up appropriate Kafka ACL delegation classes if delegation is enabled.
All authorization logic is delegated to KeycloakRBACAuthorizer of which a single instance is created and shared between all
instances of this class.
To install this authorizer in Kafka, specify the following in your 'server.properties':
authorizer.class.name=io.strimzi.kafka.oauth.server.authorizer.KeycloakAuthorizer
principal.builder.class=io.strimzi.kafka.oauth.server.OAuthKafkaPrincipalBuilder
Configuration options are the same as for KeycloakRBACAuthorizer.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintaclCount()org.apache.kafka.metadata.authorizer.AclMutatorIterable<org.apache.kafka.common.acl.AclBinding>acls(org.apache.kafka.common.acl.AclBindingFilter filter) voidaddAcl(org.apache.kafka.common.Uuid id, org.apache.kafka.metadata.authorizer.StandardAcl acl) List<org.apache.kafka.server.authorizer.AuthorizationResult>authorize(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.server.authorizer.Action> actions) org.apache.kafka.server.authorizer.AuthorizationResultauthorizeByResourceType(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, org.apache.kafka.common.acl.AclOperation op, org.apache.kafka.common.resource.ResourceType resourceType) voidclose()voidvoidvoidList<? extends CompletionStage<org.apache.kafka.server.authorizer.AclCreateResult>>createAcls(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.common.acl.AclBinding> aclBindings) List<? extends CompletionStage<org.apache.kafka.server.authorizer.AclDeleteResult>>deleteAcls(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.common.acl.AclBindingFilter> aclBindingFilters) voidloadSnapshot(Map<org.apache.kafka.common.Uuid, org.apache.kafka.metadata.authorizer.StandardAcl> acls) voidremoveAcl(org.apache.kafka.common.Uuid id) voidsetAclMutator(org.apache.kafka.metadata.authorizer.AclMutator aclMutator) Map<org.apache.kafka.common.Endpoint,? extends CompletionStage<Void>> start(org.apache.kafka.server.authorizer.AuthorizerServerInfo serverInfo) toString()
-
Constructor Details
-
KeycloakAuthorizer
public KeycloakAuthorizer()
-
-
Method Details
-
configure
- Specified by:
configurein interfaceorg.apache.kafka.common.Configurable
-
start
public Map<org.apache.kafka.common.Endpoint,? extends CompletionStage<Void>> start(org.apache.kafka.server.authorizer.AuthorizerServerInfo serverInfo) - Specified by:
startin interfaceorg.apache.kafka.server.authorizer.Authorizer
-
setAclMutator
public void setAclMutator(org.apache.kafka.metadata.authorizer.AclMutator aclMutator) - Specified by:
setAclMutatorin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
aclMutatorOrException
public org.apache.kafka.metadata.authorizer.AclMutator aclMutatorOrException()- Specified by:
aclMutatorOrExceptionin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
completeInitialLoad
public void completeInitialLoad()- Specified by:
completeInitialLoadin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
completeInitialLoad
- Specified by:
completeInitialLoadin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
loadSnapshot
public void loadSnapshot(Map<org.apache.kafka.common.Uuid, org.apache.kafka.metadata.authorizer.StandardAcl> acls) - Specified by:
loadSnapshotin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
addAcl
public void addAcl(org.apache.kafka.common.Uuid id, org.apache.kafka.metadata.authorizer.StandardAcl acl) - Specified by:
addAclin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
removeAcl
public void removeAcl(org.apache.kafka.common.Uuid id) - Specified by:
removeAclin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
acls
public Iterable<org.apache.kafka.common.acl.AclBinding> acls(org.apache.kafka.common.acl.AclBindingFilter filter) - Specified by:
aclsin interfaceorg.apache.kafka.server.authorizer.Authorizer
-
createAcls
public List<? extends CompletionStage<org.apache.kafka.server.authorizer.AclCreateResult>> createAcls(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.common.acl.AclBinding> aclBindings) - Specified by:
createAclsin interfaceorg.apache.kafka.server.authorizer.Authorizer- Specified by:
createAclsin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
deleteAcls
public List<? extends CompletionStage<org.apache.kafka.server.authorizer.AclDeleteResult>> deleteAcls(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.common.acl.AclBindingFilter> aclBindingFilters) - Specified by:
deleteAclsin interfaceorg.apache.kafka.server.authorizer.Authorizer- Specified by:
deleteAclsin interfaceorg.apache.kafka.metadata.authorizer.ClusterMetadataAuthorizer
-
aclCount
public int aclCount()- Specified by:
aclCountin interfaceorg.apache.kafka.server.authorizer.Authorizer
-
authorizeByResourceType
public org.apache.kafka.server.authorizer.AuthorizationResult authorizeByResourceType(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, org.apache.kafka.common.acl.AclOperation op, org.apache.kafka.common.resource.ResourceType resourceType) - Specified by:
authorizeByResourceTypein interfaceorg.apache.kafka.server.authorizer.Authorizer
-
authorize
public List<org.apache.kafka.server.authorizer.AuthorizationResult> authorize(org.apache.kafka.server.authorizer.AuthorizableRequestContext requestContext, List<org.apache.kafka.server.authorizer.Action> actions) - Specified by:
authorizein interfaceorg.apache.kafka.server.authorizer.Authorizer
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
toString
-