--- # Was a plain ConfigMap with client_secret hardcoded in plaintext - found # and fixed 2026-08-20 (user: "make the repo proper and not have # sensitive things in the files"). Unlike argocd/n8n/etc, Vault had NO # copy of this at all before this fix - the ONLY place it existed was # here and in gitlab-oidc-secret (a manually kubectl-created Secret in # the gitlab namespace, apps/gitlab/values.yaml:166 - also fixed # alongside this). Created secret/gitlab-oauth in Vault with the existing # live value (not rotated - this is GitLab's actual working OIDC # credential right now, changing it would break login until both sides # are updated in lockstep). apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: authentik-blueprints-gitlab namespace: authentik spec: refreshInterval: 1h secretStoreRef: kind: ClusterSecretStore name: vault-backend target: name: authentik-blueprints-gitlab creationPolicy: Owner template: metadata: labels: goauthentik.io/blueprint: "true" data: gitlab.yaml: |- # yaml-language-server: $schema=https://goauthentik.io/blueprints/schema.json version: 1 metadata: name: gitlab-oidc entries: # OAuth2/OIDC Provider for GitLab - model: authentik_providers_oauth2.oauth2provider id: gitlab-provider state: present identifiers: name: GitLab attrs: name: GitLab client_id: 70b9da5c8166cea0ba504a869824020bce6636 client_secret: "{{ .clientSecret }}" authorization_flow: !Find [authentik_flows.flow, [slug, default-provider-authorization-implicit-consent]] authentication_flow: !Find [authentik_flows.flow, [slug, default-authentication-flow]] invalidation_flow: !Find [authentik_flows.flow, [slug, default-provider-invalidation-flow]] redirect_uris: - url: "https://gitlab.kube.huskypup.net/users/auth/openid_connect/callback" matching_mode: strict enabled: true property_mappings: - !Find [authentik_providers_oauth2.scopemapping, [scope_name, openid]] - !Find [authentik_providers_oauth2.scopemapping, [scope_name, email]] - !Find [authentik_providers_oauth2.scopemapping, [scope_name, profile]] client_type: confidential access_code_validity: "minutes=10" access_token_validity: "days=7" refresh_token_validity: "days=30" signing_key: !Find [authentik_crypto.certificatekeypair, [name, default]] # Application for GitLab - model: authentik_core.application id: gitlab-application state: present identifiers: slug: gitlab attrs: name: GitLab slug: gitlab policy_engine_mode: any provider: !KeyOf gitlab-provider data: - secretKey: clientSecret remoteRef: key: gitlab-oauth property: client-secret