DexAuthenticator
Scope: Namespaced
After the DexAuthenticator object appears in the namespace, the following objects will be created:
- Deployment containing OAuth2-Proxy and Redis containers;
- Service, pointing to OAuth2-Proxy;
- Ingress resource, configured to receive requests on https://<applicationDomain>/dex-authenticatorand send it to a service side;
- Secrets, needed to access Dex.
Warning. After restarting a pod with an OAuth2-Proxy, the current Access Token and ID Token will be queried (using the refresh token) and stored in a Redis memory.
Example:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
  name: app-name
  namespace: app-namespace
spec:
  applicationDomain: app-name.kube.my-domain.com
  sendAuthorizationHeader: false
  applicationIngressCertificateSecretName: ingress-tls
  applicationIngressClassName: nginx
  keepUsersLoggedInFor: 720h
  allowedGroups:
  - everyone
  - admins
  whitelistSourceRanges:
  - 1.1.1.1/32
  - 192.168.0.0/24
  additionalApplications:
  - domain: additional-app-name.kube.my-domain.com
    ingressSecretName: ingress-tls
    ingressClassName: nginx
    signOutURL: "/logout"
    whitelistSourceRanges:
    - 2.2.2.2/32
- objectspecRequired value - array of objectsspec.additionalApplicationsA list of additional applications for which user authentication is required. - stringspec.additionalApplications.domainRequired value An application domain from which the user request will be redirected for authentication in Dex. Warning. Must be specified without HTTP scheme. Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.additionalApplications.ingressClassNameRequired value The name of the Ingress class to be used in the Ingress resource (it must match the Ingress class name for the application domain). Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.additionalApplications.ingressSecretNameThe name of the Secret containing the TLS certificate (from the domain) used in the applications Ingress resource. The Secret must be in the same namespace as DexAuthenticator. Pattern: ^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- stringspec.additionalApplications.signOutURLThe URL of the application from which requests will be redirected to the sign-out URL of the dex-authenticator.It is used in the application to direct logout requests. A separate Ingress resource will be created for the specified URL, and requests to it will be redirected to dex-authenticator.
- array of stringsspec.additionalApplications.whitelistSourceRangesCIDRs that are allowed to authenticate. Authentication is allowed without IP address restrictions, If not specified. Example: whitelistSourceRanges: - 192.168.42.0/24- stringElement of the arrayPattern: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
 
 
- array of stringsspec.allowedEmailsA list of emails of users are allowed to connect to the client. By default, all users can connect. Default: All emails are allowed.
- array of stringsspec.allowedGroupsA list of groups whose members are allowed to connect to the client. By default, all groups can connect. Default: All groups are allowed.
- stringspec.applicationDomainRequired value An address for the application (DNS domain for Ingress resource) from which the user request will be redirected for authentication in Dex. Warning. Must be specified without HTTP scheme. Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example: applicationDomain: my-app.domain.com
- stringspec.applicationIngressCertificateSecretNameThe name of the Secret containing the TLS certificate for the application domain (is used in the Ingress resource). The Secret must be located in the same namespace as the DexAuthenticator. Pattern: ^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$Example: applicationIngressCertificateSecretName: ingress-tls
- stringspec.applicationIngressClassNameRequired value The name of the Ingress class to be used in the Ingress resource (it must match the Ingress class name for the application domain). Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example: applicationIngressClassName: nginx
- booleanspec.highAvailabilityEnables high availability mode for dex-authenticator.When this mode is enabled, multiple pod replicas will be deployed to ensure fault tolerance. Default: false
- stringspec.keepUsersLoggedInForUser session will be kept for specified amount of time even if user will not log in. Specified with s,morhsuffix.Default: 168hExample: keepUsersLoggedInFor: 24h
- objectspec.nodeSelectorIf specified, the dex-authenticatorpods nodeSelector.Format: the standard nodeSelectorlist. Instance pods inherit this field as is.
- booleanRequest to application will be sent with Authorization: Bearerheader when the option is switched to true.
- stringspec.signOutURLThe URL of the application from which requests will be redirected to the sign-out URL of the dex-authenticator.It is used in the application to direct logout requests. A separate Ingress resource will be created for the specified URL, and requests to it will be redirected to dex-authenticator.
- array of objectsspec.tolerationsIf specified the dex-authenticatorpods tolerations.Format: the standard toleration list. Instance pods inherit this field as is. - stringspec.tolerations.effectDefines the taint’s effect this toleration is associated with (it matches any effect if empty). Allowed values: NoSchedule,PreferNoSchedule,NoExecute
- stringspec.tolerations.keyDefines the taint’s key this toleration is associated with (it matches any key if empty). If the key is omitted (emplty), then operatormust be set toExists(which means it matches anyvalueandkey).
- stringspec.tolerations.operatorDefines how the key and its value are linked — whether the key must be Equalto the value or can have any value.Setting it to Existsis equivalent to the value having any value so that the pod with the specified toleration can match the corresponding taint.Default: EqualAllowed values: Exists,Equal
- integerspec.tolerations.tolerationSecondsSpecifies the period (in seconds) that the scheduler waits before evicting a Pod from a node if the toleration no longer matches the taint (only applicable to the NoExecuteeffect, otherwise ignored).If the parameter is not set, the Pod will not be evicted from the node if the toleration no longer matches the taint. If the parameter is set to zero (or negative), the Pod will be evicted immediately if the toleration no longer matches the taint. The default is: not set. 
- stringspec.tolerations.valueThe value that the toleration must match. Must be empty if the operatorparameter is set toExists.
 
- array of stringsspec.whitelistSourceRangesCIDRs that are allowed to authenticate. Authentication is allowed without IP address restrictions, If not specified. Example: whitelistSourceRanges: - 192.168.42.0/24- stringElement of the arrayPattern: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
 
 
- objectspecRequired value - array of stringsspec.allowedEmailsA list of emails of users are allowed to connect to the client. By default, all users can connect. Default: All users are allowed.
- array of stringsspec.allowedGroupsA list of groups whose members are allowed to connect to the client. By default, all groups can connect. Default: All groups are allowed.
- array of objectsspec.applicationsRequired value A list of applications for which user authentication is required. - stringspec.applications.domainRequired value An application domain (for Ingress resources) from which the user request will be redirected for authentication in Dex. Warning. Must be specified without HTTP scheme. Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.applications.ingressClassNameRequired value The name of the Ingress class to be used in the Ingress resource (it must match the Ingress class name for the application domain). Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.applications.ingressSecretNameThe name of the Secret containing the TLS certificate for the application domain (is used in the Ingress resource). The Secret must be located in the same namespace as the DexAuthenticator. Pattern: ^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- stringspec.applications.signOutURLThe URL of the application from which requests will be redirected to the sign-out URL of the dex-authenticator.It is used in the application to direct logout requests. A separate Ingress resource will be created for the specified URL, and requests to it will be redirected to dex-authenticator.
- array of stringsspec.applications.whitelistSourceRangesCIDRs that are allowed to authenticate. Authentication is allowed without IP address restrictions, if not specified. Example: whitelistSourceRanges: - 192.168.42.0/24- stringElement of the arrayPattern: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
 
 
- booleanspec.highAvailabilityEnables high availability mode for dex-authenticator.When this mode is enabled, multiple pod replicas will be deployed to ensure fault tolerance. Default: false
- stringspec.keepUsersLoggedInForUser session will be kept for specified amount of time even if user will not log in. Specified with s,morhsuffix.Default: 168h
- objectspec.nodeSelectorIf specified, the dex-authenticatorpods nodeSelector.Format: the standard nodeSelectorlist. Instance pods inherit this field as is.
- booleanRequest to application will be sent with Authorization: Bearerheader when the option is switched to true.
- array of objectsspec.tolerationsIf specified the dex-authenticatorpods tolerations.Format: the standard toleration list. Instance pods inherit this field as is. - stringspec.tolerations.effectDefines the taint’s effect this toleration is associated with (it matches any effect if empty). Allowed values: NoSchedule,PreferNoSchedule,NoExecute
- stringspec.tolerations.keyDefines the taint’s key this toleration is associated with (it matches any key if empty). If the key is omitted (emplty), then operatormust be set toExists(which means it matches anyvalueandkey).
- stringspec.tolerations.operatorDefines how the key and its value are linked — whether the key must be Equalto the value or can have any value.Setting it to Existsis equivalent to the value having any value so that the pod with the specified toleration can match the corresponding taint.Default: EqualAllowed values: Exists,Equal
- integerspec.tolerations.tolerationSecondsSpecifies the period (in seconds) that the scheduler waits before evicting a Pod from a node if the toleration no longer matches the taint (only applicable to the NoExecuteeffect, otherwise ignored).If the parameter is not set, the Pod will not be evicted from the node if the toleration no longer matches the taint. If the parameter is set to zero (or negative), the Pod will be evicted immediately if the toleration no longer matches the taint. The default is: not set. 
- stringspec.tolerations.valueThe value that the toleration must match. Must be empty if the operatorparameter is set toExists.
 
 
Deprecated resource. Support for the resource might be removed in a later release.
After the DexAuthenticator object appears in the namespace, the following objects will be created:
- Deployment containing OAuth2-Proxy and Redis containers;
- Service, pointing to OAuth2-Proxy;
- Ingress resource, configured to receive requests on https://<applicationDomain>/dex-authenticatorand send it to a service side;
- Secrets, needed to access Dex.
Warning. After restarting a pod with an OAuth2-Proxy, the current Access Token and ID Token will be queried (using the refresh token) and stored in a Redis memory.
Example:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
  name: app-name
  namespace: app-namespace
spec:
  applicationDomain: app-name.kube.my-domain.com
  sendAuthorizationHeader: false
  applicationIngressCertificateSecretName: ingress-tls
  applicationIngressClassName: nginx
  keepUsersLoggedInFor: 720h
  allowedGroups:
  - everyone
  - admins
  whitelistSourceRanges:
  - 1.1.1.1/32
  - 192.168.0.0/24
  additionalApplications:
  - domain: additional-app-name.kube.my-domain.com
    ingressSecretName: ingress-tls
    ingressClassName: nginx
    signOutURL: "/logout"
    whitelistSourceRanges:
    - 2.2.2.2/32
- objectspecRequired value - array of objectsspec.additionalApplicationsA list of additional applications for which user authentication is required. - stringspec.additionalApplications.domainRequired value An application domain from which the user request will be redirected for authentication in Dex. Warning. Must be specified without HTTP scheme. Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.additionalApplications.ingressClassNameRequired value The name of the Ingress class to be used in the Ingress resource (it must match the Ingress class name for the application domain). Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- stringspec.additionalApplications.ingressSecretNameThe name of the Secret containing the TLS certificate (from the domain) used in the applications Ingress resource. The Secret must be in the same namespace as DexAuthenticator. Pattern: ^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- stringspec.additionalApplications.signOutURLThe URL of the application from which requests will be redirected to the sign-out URL of the dex-authenticator.It is used in the application to direct logout requests. A separate Ingress resource will be created for the specified URL, and requests to it will be redirected to dex-authenticator.
- array of stringsspec.additionalApplications.whitelistSourceRangesCIDRs that are allowed to authenticate. Authentication is allowed without IP address restrictions, If not specified. Example: whitelistSourceRanges: - 192.168.42.0/24- stringElement of the arrayPattern: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
 
 
- array of stringsspec.allowedEmailsA list of emails of users are allowed to connect to the client. By default, all users can connect. Default: All emails are allowed.
- array of stringsspec.allowedGroupsA list of groups whose members are allowed to connect to the client. By default, all groups can connect. Default: All groups are allowed.
- stringspec.applicationDomainRequired value An address for the application (DNS domain for Ingress resource) from which the user request will be redirected for authentication in Dex. Warning. Must be specified without HTTP scheme. Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example: applicationDomain: my-app.domain.com
- stringspec.applicationIngressCertificateSecretNameThe name of the Secret containing the TLS certificate for the application domain (is used in the Ingress resource). The Secret must be located in the same namespace as the DexAuthenticator. Pattern: ^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$Example: applicationIngressCertificateSecretName: ingress-tls
- stringspec.applicationIngressClassNameRequired value The name of the Ingress class to be used in the Ingress resource (it must match the Ingress class name for the application domain). Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example: applicationIngressClassName: nginx
- booleanspec.highAvailabilityEnables high availability mode for dex-authenticator.When this mode is enabled, multiple pod replicas will be deployed to ensure fault tolerance. Default: false
- stringspec.keepUsersLoggedInForUser session will be kept for specified amount of time even if user will not log in. Specified with s,morhsuffix.Default: 168hExample: keepUsersLoggedInFor: 24h
- objectspec.nodeSelectorIf specified, the dex-authenticatorpods nodeSelector.Format: the standard nodeSelectorlist. Instance pods inherit this field as is.
- booleanRequest to application will be sent with Authorization: Bearerheader when the option is switched to true.
- stringspec.signOutURLThe URL of the application from which requests will be redirected to the sign-out URL of the dex-authenticator.It is used in the application to direct logout requests. A separate Ingress resource will be created for the specified URL, and requests to it will be redirected to dex-authenticator.
- array of objectsspec.tolerationsIf specified the dex-authenticatorpods tolerations.Format: the standard toleration list. Instance pods inherit this field as is. - stringspec.tolerations.effectDefines the taint’s effect this toleration is associated with (it matches any effect if empty). Allowed values: NoSchedule,PreferNoSchedule,NoExecute
- stringspec.tolerations.keyDefines the taint’s key this toleration is associated with (it matches any key if empty). If the key is omitted (emplty), then operatormust be set toExists(which means it matches anyvalueandkey).
- stringspec.tolerations.operatorDefines how the key and its value are linked — whether the key must be Equalto the value or can have any value.Setting it to Existsis equivalent to the value having any value so that the pod with the specified toleration can match the corresponding taint.Default: EqualAllowed values: Exists,Equal
- integerspec.tolerations.tolerationSecondsSpecifies the period (in seconds) that the scheduler waits before evicting a Pod from a node if the toleration no longer matches the taint (only applicable to the NoExecuteeffect, otherwise ignored).If the parameter is not set, the Pod will not be evicted from the node if the toleration no longer matches the taint. If the parameter is set to zero (or negative), the Pod will be evicted immediately if the toleration no longer matches the taint. The default is: not set. 
- stringspec.tolerations.valueThe value that the toleration must match. Must be empty if the operatorparameter is set toExists.
 
- array of stringsspec.whitelistSourceRangesCIDRs that are allowed to authenticate. Authentication is allowed without IP address restrictions, If not specified. Example: whitelistSourceRanges: - 192.168.42.0/24- stringElement of the arrayPattern: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
 
 
DexClient
Scope: Namespaced
Allows applications that support DC authentication to interact with Dex.
After the DexClient object appears in the cluster:
- Dex will register a client with a dex-client-<NAME>@<NAMESPACE>clientID, where<NAME>and<NAMESPACE>aremetadata.nameandmetadata.namespaceof the DexClient object, respectively.
- A dex-client-<NAME>Secret containing the client access password (clientSecret) will be created in the corresponding namespace (where<NAME>ismetadata.nameof the DexClient object).
- objectspecRequired value - array of stringsspec.allowedEmailsA list of emails of users are allowed to connect to the client. By default, all users can connect. Default: All users are allowed.
- array of stringsspec.allowedGroupsA list of groups whose members are allowed to connect to the client; By default, all groups can connect. 
- array of stringsspec.redirectURIsArray or urls that Dex can redirect to after successful authentication. 
- objectspec.secretMetadataA list of labels and an annotations that will be transferred to the metadata secrets of the DexClient resource. - objectspec.secretMetadata.annotations
- objectspec.secretMetadata.labels
 
- array of stringsspec.trustedPeersOAuth2 client IDs that allowed cross authentication with the current client. 
 
Deprecated resource. Support for the resource might be removed in a later release.
Allows applications that support DC authentication to interact with Dex.
After the DexClient object appears in the cluster:
- Dex will register a client with a dex-client-<NAME>@<NAMESPACE>clientID, where<NAME>and<NAMESPACE>aremetadata.nameandmetadata.namespaceof the DexClient object, respectively.
- A dex-client-<NAME>Secret containing the client access password (clientSecret) will be created in the corresponding namespace (where<NAME>ismetadata.nameof the DexClient object).
- objectspecRequired value - array of stringsspec.allowedEmailsA list of emails of users are allowed to connect to the client. By default, all users can connect. Default: All users are allowed.
- array of stringsspec.allowedGroupsA list of groups whose members are allowed to connect to the client; By default, all groups can connect. 
- array of stringsspec.redirectURIsArray or urls that Dex can redirect to after successful authentication. 
- objectspec.secretMetadataA list of labels and an annotations that will be transferred to the metadata secrets of the DexClient resource. - objectspec.secretMetadata.annotations
- objectspec.secretMetadata.labels
 
- array of stringsspec.trustedPeersOAuth2 client IDs that allowed cross authentication with the current client. 
 
DexProvider
Scope: Cluster
Defines the configuration for connecting a third-party provider.
With it, you can flexibly configure the integration of the account directory with Kubernetes.
Warning. It is forbidden to use users and groups with the system: prefix. Authentication attempts by such users or members of such groups will be rejected, and a corresponding warning will appear in the kube-apiserver logs.
- objectspecRequired value - objectspec.bitbucketCloudParameters of the Bitbucket Cloud (intended for the type: BitbucketCloud).- stringspec.bitbucketCloud.clientIDRequired value Team application ID from BitbucketCloud (Key). 
- stringspec.bitbucketCloud.clientSecretRequired value Team application secret key from BitbucketCloud. 
- booleanspec.bitbucketCloud.includeTeamGroupsOptional parameter to include team groups. If enabled, the groups claim of Dex id_token will looks like this: ["my_team", "my_team/administrators", "my_team/members"]Default: false
- array of stringsspec.bitbucketCloud.teamsA list of allowed Bitbucket Cloud teams (filter). The user token will contain a set intersection of Bitbucket Cloud teams and teams from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain the user teams in the groupsclaim (similar to other providers).
 
- objectspec.crowdParameters of the Crowd (intended for the type: Crowd).- stringspec.crowd.baseURLRequired value Base part of Attlassian Crowd URL. Example: baseURL: https://crowd.example.com/crowd
- stringspec.crowd.clientIDRequired value Application ID from Atlassian Crowd (Application Name). 
- stringspec.crowd.clientSecretRequired value Application secret key from Atlassian Crowd (Password). 
- booleanspec.crowd.enableBasicAuthEnables basic authorization for the Kubernetes API server. The username and password of the user from the application created in Crowd are used as credentials for basic authorization (you can enable it only if there is just one provider of the OIDC/Crowd type). Works only if the publishAPIis enabled.Authorization and group data obtained from an IdP are stored in the cache for 10 seconds. 
- array of stringsspec.crowd.groupsA list of allowed Crowd groups (filter). The user token will contain a set intersection of Crowd groups and groups from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all Crowd groups if the parameter is not set. 
- stringspec.crowd.usernamePromptPrompt for username field. Default: Crowd username
 
- stringspec.displayNameRequired value The provider name to show on the authentication provider selection page. The selection page will not be displayed if there is only one provider configured. 
- objectspec.githubParameters of the GitHub provider (intended for the type: Githubcase only).- stringspec.github.clientIDRequired value Organization application ID from GitHub. 
- stringspec.github.clientSecretRequired value Organization application secret key from GitHub. 
- array of objectsspec.github.orgsFilter for user organizations. ID token will contain only organizations from this list. If the user is not in any organization from this list, an authorization will fail. By default, all organizations allowed. - stringspec.github.orgs.nameRequired value Name of organization. 
- array of stringsspec.github.orgs.teamsA list of allowed GitHub teams (filter). The user token will contain a set intersection of teams from GitHub and teams from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all GitHub teams if the parameter is not set. 
 
- stringspec.github.teamNameFieldAs an example, group claims for member of ‘Site Reliability Engineers’ in Acme organization would yield: - [‘acme:Site Reliability Engineers’] for ‘Name’
- [‘acme:site-reliability-engineers’] for ‘Slug’
- [‘acme:Site Reliability Engineers’, ‘acme:site-reliability-engineers’] for ‘Both’
 ‘name’ will be used by default. Default: NameAllowed values: Name,Slug,Both
- booleanspec.github.useLoginAsIDFlag which will switch from using the internal GitHub id to the users handle (@mention) as the user id. It is possible for a user to change their own user name but it is very rare for them to do so. Equals to false by default. 
 
- objectspec.gitlabParameters of the GitLab provider (intended for the type: Gitlabcase only).- stringspec.gitlab.baseURLBase part of GitLab URL. Example: baseURL: https://gitlab.example.com
- stringspec.gitlab.clientIDRequired value Application ID from GitLab. 
- stringspec.gitlab.clientSecretRequired value Application secret key from GitLab. 
- array of stringsspec.gitlab.groupsA list (filter) of allowed GitLab groups (group paths and not names). The user token will contain a set intersection of GitLab groups and groups from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all GitLab groups if the parameter is not set; 
- booleanspec.gitlab.useLoginAsIDFlag to switch from using the internal GitLab id to the users handle (@mention) as the user id. It is possible for a user to change their own user name but it is very rare for them to do so. Equals to false by default. 
 
- objectspec.ldapParameters of the LDAP. - stringspec.ldap.bindDNThe DN for an application service account. The connector uses these credentials to search for users and groups. Not required if the LDAP server provides access for anonymous auth. Example: bindDN: uid=serviceaccount,cn=users,dc=example,dc=com
- stringspec.ldap.bindPWPassword for read-only service account. Please note that if the bind password contains a $, it has to be saved in an environment variable which should be given as the value tobindPW.Example: bindPW: password
- stringspec.ldap.groupSearch.baseDNRequired value BaseDN to start the search from. Example: baseDN: cn=users,dc=example,dc=com
- stringspec.ldap.groupSearch.filterOptional filter to apply when searching the directory. Example: filter: "(objectClass=person)"
- stringspec.ldap.groupSearch.nameAttrRequired value Represents group name. Example: nameAttr: name
- array of objectsspec.ldap.groupSearch.userMatchersRequired value Following list contains field pairs that are used to match a user to a group. It adds a requirement to the filter that an attribute in the group must match the user’s attribute value. - stringspec.ldap.groupSearch.userMatchers.groupAttrRequired value The name of the attribute that stores the group member names. Example: groupAttr: member
- stringspec.ldap.groupSearch.userMatchers.userAttrRequired value The name of the attribute that stores the user name. Example: userAttr: uid
 
 
- stringspec.ldap.hostRequired value Host and optional port of the LDAP server in the form “host:port”. If the port is not supplied, it will be guessed based on “insecureNoSSL”, and “startTLS” flags. 389 for insecure or StartTLS connections, 636 otherwise. Example: host: ldap.example.com:636
- booleanspec.ldap.insecureNoSSLFollowing field is required if the LDAP host is not using TLS (port 389). This option inherently leaks passwords to anyone on the same network as Dex. Equals to false by default. Default: false
- booleanspec.ldap.insecureSkipVerifyIf a custom certificate isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used outside of explorative phases. Default: false
- stringspec.ldap.rootCADataA CA chain to validate the provider in PEM format. Example: rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- booleanspec.ldap.startTLSWhen connecting to the server, connect using the ldap:// protocol then issue a StartTLS command. If unspecified, connections will use the ldaps:// protocol Default: false
- objectspec.ldap.userSearchRequired value User search maps a username and password entered by a user to a LDAP entry. Details… - stringspec.ldap.userSearch.baseDNRequired value BaseDN to start the search from. Example: baseDN: cn=users,dc=example,dc=com
- stringspec.ldap.userSearch.emailAttrRequired value LDAP attribute that will be matched to Dex user email entry. When an email address is not available, use another value unique to the user, like uid. Example: emailAttr: mail
- stringspec.ldap.userSearch.filterOptional filter to apply when searching the directory. Example: filter: "(objectClass=person)"
- stringspec.ldap.userSearch.idAttrRequired value LDAP attribute that will be matched to Dex user id entry. Example: idAttr: uid
- stringspec.ldap.userSearch.nameAttrLDAP attribute that will be matched to Dex user name entry. No default value provided. Example: nameAttr: name
- stringspec.ldap.userSearch.usernameRequired value Username attribute used for comparing user entries. This will be translated and combined with the other filter as “( = )". Example: username: uid
 
- stringspec.ldap.usernamePromptThe attribute to display in the provided password prompt. If unset, will display “LDAP Username”. Default: LDAP usernameExample: usernamePrompt: SSO Username
 
- objectspec.oidcParameters of the OIDC (intended for the type: OIDC).- array of stringsspec.oidc.allowedGroupsA list of groups the user must belong to in order to authenticate successfully. If none of the specified groups match the user’s groups, authentication will be denied. If the parameter is omitted, no group-based filtering will be applied. 
- booleanspec.oidc.basicAuthUnsupportedUse POST requests to interact with the provider instead of including the token in the Basic Authorization header. Generally, Dex automatically determines the type of request to make, while in some cases enabling this parameter can help. Default: false
- objectspec.oidc.claimMappingSome providers return non-standard claims (eg. mail). Claim mappings are hints for Dex how to map claims to standard OIDC claims. Dex can only map a non-standard claim to a standard one if it’s not included in the id_token returned by OIDC provider. - stringspec.oidc.claimMapping.preferred_usernameThe claim to use as the user preferred username. Default: preferred_username
 
- booleanspec.oidc.claimMappingOverrideIf enabled, the claim mapping will override the standard OIDC claims. By default, the claim mapping will be used only if the standard OIDC claims are not present, e.g., if there is no emailclaim in the id_token, theclaimMapping.emailwill be used.Default: false
- stringspec.oidc.clientIDRequired value OIDC issuer application ID. 
- stringspec.oidc.clientSecretRequired value OIDC issuer application secret key. 
- booleanspec.oidc.enableBasicAuthEnables basic authorization for the Kubernetes API server. The username and password of the user from the application created in OIDC are used as credentials for basic authorization (you can enable it only if there is just one provider of the OIDC/Crowd type). Works only if the publishAPI parameter is enabled. Authorization and group data obtained from an IdP are stored in the cache for 10 seconds. 
- booleanspec.oidc.getUserInfoRequest additional info about the authenticated user. Learn more here… Default: false
- booleanspec.oidc.insecureSkipEmailVerifiedAllow authentication for clients without verified email address. Default: false
- booleanspec.oidc.insecureSkipVerifyIf a custom certificate isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used outside of explorative phases. Default: false
- stringspec.oidc.issuerRequired value Canonical URL of the provider, also used for configuration discovery. This value MUST match the value returned in the provider config discovery. Example: issuer: https://accounts.google.com
- stringspec.oidc.promptTypeDetermines if the Issuer should ask for confirmation and provide hints during the authentication process. By default, the confirmation will be requested on the first authentication. Possible values may vary depending on the Issuer. Default: consent
- stringspec.oidc.rootCADataA CA chain to validate the provider in PEM format. Example: rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- array of stringsspec.oidc.scopesList of additional scopes to request in token response. Default: ["openid","profile","email","groups","offline_access"]
 
- stringspec.typeRequired value Type of authentication provider. Allowed values: Github,Gitlab,BitbucketCloud,Crowd,OIDC,LDAP
 
Deprecated resource. Support for the resource might be removed in a later release.
Defines the configuration for connecting a third-party provider.
With it, you can flexibly configure the integration of the account directory with Kubernetes.
- objectspecRequired value - objectspec.bitbucketCloudParameters of the Bitbucket Cloud (intended for the type: BitbucketCloud).- stringspec.bitbucketCloud.clientIDRequired value Team application ID from BitbucketCloud (Key). 
- stringspec.bitbucketCloud.clientSecretRequired value Team application secret key from BitbucketCloud. 
- booleanspec.bitbucketCloud.includeTeamGroupsOptional parameter to include team groups. If enabled, the groups claim of Dex id_token will looks like this: ["my_team", "my_team/administrators", "my_team/members"]Default: false
- array of stringsspec.bitbucketCloud.teamsA list of allowed Bitbucket Cloud teams (filter). The user token will contain a set intersection of Bitbucket Cloud teams and teams from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain the user teams in the groupsclaim (similar to other providers).
 
- objectspec.crowdParameters of the Crowd (intended for the type: Crowd).- stringspec.crowd.baseURLRequired value Base part of Attlassian Crowd URL. Example: baseURL: https://crowd.example.com/crowd
- stringspec.crowd.clientIDRequired value Application ID from Atlassian Crowd (Application Name). 
- stringspec.crowd.clientSecretRequired value Application secret key from Atlassian Crowd (Password). 
- booleanspec.crowd.enableBasicAuthEnables basic authorization for the Kubernetes API server. The username and password of the user from the application created in Crowd are used as credentials for basic authorization (you can enable it only if there is just one provider of the OIDC/Crowd type). Works only if the publishAPIis enabled.Authorization and group data obtained from an IdP are stored in the cache for 10 seconds. 
- array of stringsspec.crowd.groupsA list of allowed Crowd groups (filter). The user token will contain a set intersection of Crowd groups and groups from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all Crowd groups if the parameter is not set. 
- stringspec.crowd.usernamePromptPrompt for username field. Default: Crowd username
 
- stringspec.displayNameRequired value The provider name to show on the authentication provider selection page. The selection page will not be displayed if there is only one provider configured. 
- objectspec.githubParameters of the GitHub provider (intended for the type: Githubcase only).- stringspec.github.clientIDRequired value Organization application ID from GitHub. 
- stringspec.github.clientSecretRequired value Organization application secret key from GitHub. 
- array of objectsspec.github.orgsFilter for user organizations. ID token will contain only organizations from this list. If the user is not in any organization from this list, an authorization will fail. By default, all organizations allowed. - stringspec.github.orgs.nameRequired value Name of organization. 
- array of stringsspec.github.orgs.teamsA list of allowed GitHub teams (filter). The user token will contain a set intersection of teams from GitHub and teams from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all GitHub teams if the parameter is not set. 
 
- stringspec.github.teamNameFieldAs an example, group claims for member of ‘Site Reliability Engineers’ in Acme organization would yield: - [‘acme:Site Reliability Engineers’] for ‘name’
- [‘acme:site-reliability-engineers’] for ‘slug’
- [‘acme:Site Reliability Engineers’, ‘acme:site-reliability-engineers’] for ‘both’
 ‘name’ will be used by default. Default: nameAllowed values: name,slug,both
- booleanspec.github.useLoginAsIDFlag which will switch from using the internal GitHub id to the users handle (@mention) as the user id. It is possible for a user to change their own user name but it is very rare for them to do so. Equals to false by default. 
 
- objectspec.gitlabParameters of the GitLab provider (intended for the type: Gitlabcase only).- stringspec.gitlab.baseURLBase part of GitLab URL. Example: baseURL: https://gitlab.example.com
- stringspec.gitlab.clientIDRequired value Application ID from GitLab. 
- stringspec.gitlab.clientSecretRequired value Application secret key from GitLab. 
- array of stringsspec.gitlab.groupsA list (filter) of allowed GitLab groups (group paths and not names). The user token will contain a set intersection of GitLab groups and groups from this list. If the set is empty, the authorization will be considered unsuccessful. The user token will contain all GitLab groups if the parameter is not set; 
- booleanspec.gitlab.useLoginAsIDFlag to switch from using the internal GitLab id to the users handle (@mention) as the user id. It is possible for a user to change their own user name but it is very rare for them to do so. Equals to false by default. 
 
- objectspec.ldapParameters of the LDAP. - stringspec.ldap.bindDNThe DN for an application service account. The connector uses these credentials to search for users and groups. Not required if the LDAP server provides access for anonymous auth. Example: bindDN: uid=serviceaccount,cn=users,dc=example,dc=com
- stringspec.ldap.bindPWPassword for read-only service account. Please note that if the bind password contains a $, it has to be saved in an environment variable which should be given as the value tobindPW.Example: bindPW: password
- stringspec.ldap.groupSearch.baseDNRequired value BaseDN to start the search from. Example: baseDN: cn=users,dc=example,dc=com
- stringspec.ldap.groupSearch.filterOptional filter to apply when searching the directory. Example: filter: "(objectClass=person)"
- stringspec.ldap.groupSearch.nameAttrRequired value Represents group name. Example: nameAttr: name
- array of objectsspec.ldap.groupSearch.userMatchersRequired value Following list contains field pairs that are used to match a user to a group. It adds a requirement to the filter that an attribute in the group must match the user’s attribute value. - stringspec.ldap.groupSearch.userMatchers.groupAttrRequired value The name of the attribute that stores the group member names. Example: groupAttr: member
- stringspec.ldap.groupSearch.userMatchers.userAttrRequired value The name of the attribute that stores the user name. Example: userAttr: uid
 
 
- stringspec.ldap.hostRequired value Host and optional port of the LDAP server in the form “host:port”. If the port is not supplied, it will be guessed based on “insecureNoSSL”, and “startTLS” flags. 389 for insecure or StartTLS connections, 636 otherwise. Example: host: ldap.example.com:636
- booleanspec.ldap.insecureNoSSLFollowing field is required if the LDAP host is not using TLS (port 389). This option inherently leaks passwords to anyone on the same network as Dex. Equals to false by default. Default: false
- booleanspec.ldap.insecureSkipVerifyIf a custom certificate isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used outside of explorative phases. Default: false
- stringspec.ldap.rootCADataA CA chain to validate the provider in PEM format. Example: rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- booleanspec.ldap.startTLSWhen connecting to the server, connect using the ldap:// protocol then issue a StartTLS command. If unspecified, connections will use the ldaps:// protocol Default: false
- objectspec.ldap.userSearchRequired value User search maps a username and password entered by a user to a LDAP entry. Details… - stringspec.ldap.userSearch.baseDNRequired value BaseDN to start the search from. Example: baseDN: cn=users,dc=example,dc=com
- stringspec.ldap.userSearch.emailAttrRequired value LDAP attribute that will be matched to Dex user email entry. When an email address is not available, use another value unique to the user, like uid. Example: emailAttr: mail
- stringspec.ldap.userSearch.filterOptional filter to apply when searching the directory. Example: filter: "(objectClass=person)"
- stringspec.ldap.userSearch.idAttrRequired value LDAP attribute that will be matched to Dex user id entry. Example: idAttr: uid
- stringspec.ldap.userSearch.nameAttrLDAP attribute that will be matched to Dex user name entry. No default value provided. Example: nameAttr: name
- stringspec.ldap.userSearch.usernameRequired value Username attribute used for comparing user entries. This will be translated and combined with the other filter as “( = )". Example: username: uid
 
- stringspec.ldap.usernamePromptThe attribute to display in the provided password prompt. If unset, will display “LDAP Username”. Default: LDAP usernameExample: usernamePrompt: SSO Username
 
- objectspec.oidcParameters of the OIDC (intended for the type: OIDC).- array of stringsspec.oidc.allowedGroupsA list of groups the user must belong to in order to authenticate successfully. If none of the specified groups match the user’s groups, authentication will be denied. If the parameter is omitted, no group-based filtering will be applied. 
- booleanspec.oidc.basicAuthUnsupportedUse POST requests to interact with the provider instead of including the token in the Basic Authorization header. Generally, Dex automatically determines the type of request to make, while in some cases enabling this parameter can help. Default: false
- objectspec.oidc.claimMappingSome providers return non-standard claims (eg. mail). Claim mappings are hints for Dex how to map claims to standard OIDC claims. Dex can only map a non-standard claim to a standard one if it’s not included in the id_token returned by OIDC provider. - stringspec.oidc.claimMapping.preferred_usernameThe claim to use as the user preferred username. Default: preferred_username
 
- booleanspec.oidc.claimMappingOverrideIf enabled, the claim mapping will override the standard OIDC claims. By default, the claim mapping will be used only if the standard OIDC claims are not present, e.g., if there is no emailclaim in the id_token, theclaimMapping.emailwill be used.Default: false
- stringspec.oidc.clientIDRequired value OIDC issuer application ID. 
- stringspec.oidc.clientSecretRequired value OIDC issuer application secret key. 
- booleanspec.oidc.enableBasicAuthEnables basic authorization for the Kubernetes API server. The username and password of the user from the application created in OIDC are used as credentials for basic authorization (you can enable it only if there is just one provider of the OIDC/Crowd type). Works only if the publishAPI parameter is enabled. Authorization and group data obtained from an IdP are stored in the cache for 10 seconds. 
- booleanspec.oidc.getUserInfoRequest additional info about the authenticated user. Learn more here… Default: false
- booleanspec.oidc.insecureSkipEmailVerifiedAllow authentication for clients without verified email address. Default: false
- booleanspec.oidc.insecureSkipVerifyIf a custom certificate isn’t provided, this option can be used to turn off TLS certificate checks. As noted, it is insecure and shouldn’t be used outside of explorative phases. Default: false
- stringspec.oidc.issuerRequired value Canonical URL of the provider, also used for configuration discovery. This value MUST match the value returned in the provider config discovery. Example: issuer: https://accounts.google.com
- stringspec.oidc.promptTypeDetermines if the Issuer should ask for confirmation and provide hints during the authentication process. By default, the confirmation will be requested on the first authentication. Possible values may vary depending on the Issuer. Default: consent
- stringspec.oidc.rootCADataA CA chain to validate the provider in PEM format. Example: rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- array of stringsspec.oidc.scopesList of additional scopes to request in token response. Default: ["openid","profile","email","groups","offline_access"]
 
- stringspec.typeRequired value Type of authentication provider. Allowed values: Github,Gitlab,BitbucketCloud,Crowd,OIDC,LDAP
 
Group
Scope: Cluster
Version: v1alpha1
Contains information about a user group.
- objectspecRequired value - array of objectsspec.membersRequired value List of group members. - stringspec.members.kindRequired value Type of a group member. Allowed values: User,Group
- stringspec.members.nameRequired value User or group name. 
 
- stringspec.nameRequired value Unique group name. 
- objectspec.status- array of objectsspec.status.errors- stringspec.status.errors.message
- objectspec.status.errors.objectRef- stringspec.status.errors.objectRef.kindAllowed values: User,Group
- stringspec.status.errors.objectRef.name
 
 
 
 
User
Scope: Cluster
Contains information about the static user.
- objectspecRequired value - stringspec.emailRequired value User email. Caution! Note that if used together with the user-authz module, you must specify an emailto grant rights to the specific user as the user name in the ClusterAuthorizationRule CR.Example: email: user@domain.com
- array of stringsspec.groupsDeprecatedStatic user groups. Since the parameter has been deprecated, use the Group resource to add users to groups. 
- stringspec.passwordRequired value User password hash in plaintext or Base64 encoded. Use the following command to encode the password hash in Base64: echo -n '<PASSWORD>' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n' | base64 -w0; echo. Alternatively, you can use an online service (such as https://bcrypt-generator.com/).Example: password: JDJ5JDEwJGRNWGVGUVBkdUdYYVMyWDFPcGdZdk9HSy81LkdsNm5sdU9mUkhnNWlQdDhuSlh6SzhpeS5H
- stringspec.ttlStatic user TTL. It is specified as a string containing the time unit in hours and minutes: 30m, 1h, 2h30m, 24h. You can only set the TTL once. The expireAtdate will not be updated if you change it again.Pattern: ^([0-9]+h([0-9]+m)?|[0-9]+m)$Example: ttl: 24h
- stringspec.userIDDeprecatedUnique issuer user ID. It equals to .metadata.name. Deprecated and shouldn’t be set manually. 
 
Deprecated resource. Support for the resource might be removed in a later release.
Contains information about the static user.
- objectspecRequired value - stringspec.emailRequired value User email. Caution! Note that if used together with the user-authz module, you must specify an emailto grant rights to the specific user as the user name in the ClusterAuthorizationRule CR.Example: email: user@domain.com
- array of stringsspec.groupsDeprecatedStatic user groups. Since the parameter has been deprecated, use the Group resource to add users to groups. 
- stringspec.passwordRequired value User password hash in plaintext or Base64 encoded. Use the following command to encode the password hash in Base64: echo -n '<PASSWORD>' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n' | base64 -w0; echo. Alternatively, you can use an online service (such as https://bcrypt-generator.com/).Caution. If a password policy with complexity checking higher than Noneis used, the user will have to change a password set this way upon their first successful login.Example: password: JDJ5JDEwJGRNWGVGUVBkdUdYYVMyWDFPcGdZdk9HSy81LkdsNm5sdU9mUkhnNWlQdDhuSlh6SzhpeS5H
- stringspec.ttlStatic user TTL. It is specified as a string containing the time unit in hours and minutes: 30m, 1h, 2h30m, 24h. You can only set the TTL once. The expireAtdate will not be updated if you change it again.Pattern: ^([0-9]+h([0-9]+m)?|[0-9]+m)$Example: ttl: 24h
- stringspec.userIDUnique issuer user ID. It equals to .metadata.name by default. Example: userID: '08a8684b-db88-4b73-90a9-3cd1661f5466'