--- # Was a plain ConfigMap with client_secret hardcoded in plaintext - found # and fixed 2026-08-20. Same story as argocd-blueprint.yaml: the value # was already Vault's source of truth on the app side (secret/n8n-oauth), # this blueprint just had its own separate hardcoded plaintext copy. apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: authentik-blueprints-n8n namespace: authentik spec: refreshInterval: 1h secretStoreRef: kind: ClusterSecretStore name: vault-backend target: name: authentik-blueprints-n8n creationPolicy: Owner template: metadata: labels: goauthentik.io/blueprint: "true" data: n8n.yaml: |- version: 1 metadata: name: n8n-oidc entries: - model: authentik_providers_oauth2.oauth2provider id: n8n-provider state: present identifiers: name: n8n attrs: name: n8n client_id: e55cbe3c6d2ae30c05c86385802ffcfd76a972c22c8d039f000281d4a149fd44 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://n8n.kube.huskypup.net/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 Self-signed Certificate"]] - model: authentik_core.application id: n8n-application state: present identifiers: slug: n8n attrs: name: n8n slug: n8n policy_engine_mode: any provider: !KeyOf n8n-provider data: - secretKey: clientSecret remoteRef: key: n8n-oauth property: client-secret