AuthenticationClass
AuthenticationClass
is a CRD describing a generic authentication method like LDAP or Kerberos.
Multiple operators use this CRD as a way to express the authentication of the product.
At the moment the following Authentication providers are supported:
LDAP
A very simple AuthenticationClass
with LDAP Authentication looks like this:
---
apiVersion: authentication.stackable.tech/v1alpha1
kind: AuthenticationClass
metadata:
name: ldap-simple
spec:
provider:
ldap:
hostname: my.ldap.server (1)
port: 389 (2)
searchBase: ou=users,dc=example,dc=org (3)
1 | The hostname of the LDAP server without any protocol or port |
2 | The port of the LDAP server. If TLS is used it defaults to 636 otherwise to 389 |
3 | An optional searchBase where the users should be searched |
OpenLDAP
Here is an example that is tuned for an OpenLDAP LDAP server and is configured to read bind user credentials from a secret:
---
apiVersion: authentication.stackable.tech/v1alpha1
kind: AuthenticationClass
metadata:
name: openldap-simple
spec:
provider:
ldap:
hostname: my.openldap.server
port: 1389
searchBase: ou=users,dc=example,dc=org
bindCredentials:
secretClass: openldap-simple-bind (1)
---
apiVersion: secrets.stackable.tech/v1alpha1
kind: SecretClass
metadata:
name: openldap-simple-bind (2)
spec:
backend:
k8sSearch:
searchNamespace:
pod: {} (3)
---
apiVersion: v1
kind: Secret
metadata:
name: openldap-simple-bind (4)
labels:
secrets.stackable.tech/class: openldap-simple-bind (5)
stringData:
user: cn=admin,dc=example,dc=org
password: admin
1 | The name of the SecretClass providing the bind credentials (username and password). Must match the name of the SecretClass in this example in ② |
2 | The name of the SecretClass we are creating that is referred to by ➀. See SecretClass |
3 | This determines the namespace in which the referenced Secret will be looked for. In this case it searches for a Secret in the same namespace as the product runs in. See the documentation of SecretClass |
4 | The Secret containing the actual bind credentials. Please keep in mind that the Secret needs to be in the same namespace as the product |
5 | The name of the SecretClass that wants to refer to this Secret . Must match the name of the SecretClass in this example in ② |
The following diagram describes the relationship between the created CRDs
All possible attributes
The following example shows all possible attributes:
---
apiVersion: authentication.stackable.tech/v1alpha1
kind: AuthenticationClass
metadata:
name: ldap-full
spec:
provider:
ldap:
hostname: my.ldap.server (1)
port: 389 (2)
searchBase: ou=users,dc=example,dc=org (3)
searchFilter: (memberOf=cn=myTeam,ou=teams,dc=example,dc=org) (4)
ldapFieldNames: (5)
uid: uid
group: memberof
givenName: givenName
surname: sn
email: mail
bindCredentials:
secretClass: ldap-full-bind (6)
scope: (7)
pod: true
node: false
services:
- ldap-full
tls: (8)
verification:
server:
caCert:
secretClass: ldap-full-ca-cert
1 | The hostname of the LDAP server without any protocol or port |
2 | The port of the LDAP server. If TLS is used defaults to 636 otherwise to 389 |
3 | The searchBase where the users should be searched |
4 | Additional filter that filters the allowed users |
5 | The name of the corresponding field names in the LDAP objects |
6 | The name of the SecretClass providing the bind credentials (username and password) |
7 | The Scope of the SecretClass |
8 | TLS connection to the LDAP server |