--- # 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"). The value itself was already the # genuine live secret ArgoCD's own OIDC client uses (apps/argocd/ # manifests/external-secret.yaml pulls the same value from Vault at # secret/argocd-oauth) - Vault was already the source of truth on the # APP side, this blueprint (the Authentik PROVIDER side) just had its own # separate hardcoded plaintext copy instead of also reading from Vault. # # Converted ConfigMap -> ExternalSecret (chart supports mounting # blueprints from Secrets too - see blueprints.secrets in values.yaml). # client_id stays inline - it's not a secret, same convention as every # other blueprint here. apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: authentik-blueprints-argocd namespace: authentik spec: refreshInterval: 1h secretStoreRef: kind: ClusterSecretStore name: vault-backend target: name: authentik-blueprints-argocd creationPolicy: Owner template: metadata: labels: goauthentik.io/blueprint: "true" data: argocd.yaml: |- version: 1 metadata: name: argocd-oidc entries: - model: authentik_providers_oauth2.oauth2provider id: argocd-provider state: present identifiers: name: ArgoCD attrs: name: ArgoCD client_id: 3791058a7de278045e5ec36be29f7a33d635119b8c786f20c86b185139c28841 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://argocd.kube.huskypup.net/auth/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: argocd-application state: present identifiers: slug: argocd attrs: name: ArgoCD slug: argocd policy_engine_mode: any provider: !KeyOf argocd-provider data: - secretKey: clientSecret remoteRef: key: argocd-oauth property: client-secret