Skip to content

Configure authentication

Set auth.mode in Helm values.

ModeIdentity sourceGroups
oidcOIDC issuer, directly or through DexConfigured token claim
ldapLDAP directoryLDAP group search
localVarroa User resourcesVarroa groups

Authorization is configured separately with Varroa RBAC.

auth:
mode: oidc
cookieDomain: .varroa.example.com
dashboardUrl: https://app.varroa.example.com
oidc:
issuer: https://login.example.com/
clientId: varroa-dashboard
clientSecret: <client-secret>
redirectUrl: https://app.varroa.example.com/api/v1/callback
scopes: openid,profile,email,groups
userClaim: preferred_username,sub
groupClaim: groups
dex:
enabled: false

Register the exact redirect URL with the provider. dashboardUrl must be an absolute HTTPS origin except on supported local development hosts. After sign in, inspect /api/v1/me and verify the username and groups used by role bindings.

Enable Dex when an upstream provider needs a Dex connector. Configure Varroa as a Dex static client and set the upstream callback to the Dex callback URL.

auth:
mode: oidc
cookieDomain: .varroa.example.com
dashboardUrl: https://app.varroa.example.com
oidc:
clientId: varroa
clientSecret: <shared-client-secret>
redirectUrl: https://app.varroa.example.com/api/v1/callback
dex:
enabled: true
config:
issuer: https://dex.varroa.example.com
staticClients:
- id: varroa
secret: <shared-client-secret>
redirectURIs:
- https://app.varroa.example.com/api/v1/callback

Add the required OIDC, LDAP, SAML, or OAuth connector under dex.config.

auth:
mode: ldap
cookieDomain: .varroa.example.com
dashboardUrl: https://app.varroa.example.com
dex:
enabled: false

Configure the BFF with these environment variables:

SettingVariable
ServerVARROA_LDAP_URL
Direct bindVARROA_LDAP_BIND_DN_TEMPLATE
User search baseVARROA_LDAP_USER_SEARCH_BASE
User search filterVARROA_LDAP_USER_SEARCH_FILTER, default (uid=%s)
Email attributeVARROA_LDAP_USER_EMAIL_ATTR, default mail
Display nameVARROA_LDAP_USER_NAME_ATTR, default cn
Service account DNVARROA_LDAP_SERVICE_ACCOUNT_DN
Service account passwordVARROA_LDAP_SERVICE_ACCOUNT_PASSWORD
Group settingVariable
Group search baseVARROA_LDAP_GROUP_SEARCH_BASE
Group search filterVARROA_LDAP_GROUP_SEARCH_FILTER, default (member=%s)
Group name attributeVARROA_LDAP_GROUP_NAME_ATTR, default cn
CA bundle pathVARROA_LDAP_CA_CERT_FILE

Store bind credentials in a Secret. Prefer LDAPS or verified StartTLS-capable infrastructure, and confirm group resolution through /api/v1/me.

auth:
mode: local
bffUrl: "http://<release>-varroa-bff.<namespace>.svc.cluster.local:8080"
cookieDomain: .varroa.example.com
dashboardUrl: https://app.varroa.example.com
dex:
enabled: false

Create users through the dashboard or users API. Use an external identity provider for normal multi-user deployments.

The varroa_token browser cookie is shared with controller hosts through auth.cookieDomain. Choose the narrowest parent domain containing only Varroa and managed Jenkins hosts. Use TLS on every host and do not host untrusted applications under that domain.

All BFF replicas must share the OIDC state signing secret. Helm creates and preserves it unless auth.oidc.stateSecret is supplied.

Controllers need network access to the configured issuer discovery and JWKS endpoints for initial and signing-key validation.

SymptomCheck
Login loopRedirect URL, dashboard URL, TLS, and cookie domain
Jenkins is anonymousCookie coverage and TLS
Group binding failsResolved claims or LDAP groups in /api/v1/me
One replica fails callbackShared state secret