--- # Was a plain ConfigMap with client_secret hardcoded in plaintext - found # and fixed 2026-08-20. Unlike argocd/nextcloud, Vault had NO copy of # this at all - the only places it existed were here AND in # infrastructure/vault/manifests/vault-init-configmap.yaml (embedded in a # shell script that runs `vault write auth/oidc/config` once at cluster # init - also fixed alongside this, same Vault path). Created # secret/vault-oauth with the existing live value (not rotated - this is # what Vault's OWN oidc auth method is currently configured with). apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: authentik-blueprints-vault namespace: authentik spec: refreshInterval: 1h secretStoreRef: kind: ClusterSecretStore name: vault-backend target: name: authentik-blueprints-vault creationPolicy: Owner template: metadata: labels: goauthentik.io/blueprint: "true" data: vault.yaml: |- version: 1 metadata: name: vault-oidc entries: - model: authentik_providers_oauth2.oauth2provider id: vault-provider state: present identifiers: name: Vault attrs: name: Vault client_id: 9816a5ae7e7914b5d18f4ab939d011a98f8c8d6b3bb6777c46431afa06ac4a85 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://vault.kube.huskypup.net/ui/vault/auth/oidc/oidc/callback" matching_mode: strict - url: "http://localhost:8250/oidc/callback" matching_mode: strict 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: "hours=1" refresh_token_validity: "days=30" signing_key: !Find [authentik_crypto.certificatekeypair, [name, "authentik Internal JWT Certificate"]] - model: authentik_core.application id: vault-application state: present identifiers: slug: vault attrs: name: Vault slug: vault policy_engine_mode: any provider: !KeyOf vault-provider data: - secretKey: clientSecret remoteRef: key: vault-oauth property: client-secret