Skip to content

IdentityProvider

Field Type Notes
type string oidc | forward-auth | auth-request.
oidc OIDCSpec Required when type: oidc; an error otherwise.
forwardAuth ForwardAuthSpec Required when type: forward-auth; an error otherwise.
authRequest AuthRequestSpec Required when type: auth-request; an error otherwise.
roleMapping RoleMapping Map IdP groups -> roles.

OIDCSpec (oidc)

Key Type Default Required Description
issuerURL string none yes The IdP's issuer URL, used for OIDC discovery.
clientID string none yes Client id of the application registered at the IdP.
clientSecret Secret none no Client secret, as a ${ENV:...} / ${FILE:...} placeholder. Omit it for a public client relying on PKCE alone.
scopes []string openid profile email groups no Scopes requested in the authorization request.
usePKCE bool (nullable) true no Send a PKCE code challenge. Omitted means on; set false only for an IdP that rejects it.
requireVerifiedEmail bool false no Refuse a login whose ID token does not carry email_verified: true.

ForwardAuthSpec (forwardAuth)

Key Type Default Required Description
trustedProxies []string none yes CIDRs whose identity headers are believed. This is the identity tier only: see the note below.
userHeader string none yes Header carrying the username, e.g. X-authentik-username.
emailHeader string none no Header carrying the email address.
nameHeader string none no Header carrying the display name.
groupsHeader string none no Header carrying the group list that roleMapping reads.
groupsDelimiter string , no Separator splitting groupsHeader into group names.
amrHeader string none no Header carrying the authentication-methods reference, recorded but not currently gated on.

forwardAuth.trustedProxies is the identity tier and nothing else: it says which peers may assert Remote-User and friends. It does not decide the client IP: settings.trustedProxies (or a proxy host's own trustedProxies) does. See Client IP and the three trust tiers. A config that sets this field but leaves settings.trustedProxies empty logs a warning at load with the exact YAML block to add.

AuthRequestSpec (authRequest)

Key Type Default Required Description
outpostURL string none yes Base URL of the identity outpost gpm subrequests and proxies the sign-in flow to.
pathPrefix string /outpost.goauthentik.io no Path prefix on the gated host that gpm proxies verbatim to the outpost (sign-in, callback, sign-out).
authPath string <pathPrefix>/auth/nginx no The subrequest endpoint that answers allow or deny.
copyHeaders []string the Authentik X-authentik-* set no Response headers copied from the auth subrequest onto the upstream request.

RoleMapping (roleMapping)

Key Type Default Required Description
groupsClaim string groups no ID-token claim (or header field) holding the group list.
adminGroups []string none no Groups mapped to the admin role.
userGroups []string none no Groups mapped to the read-only user role.
defaultRole string "" (deny) no Role for an authenticated user in none of the groups above: "" denies, user grants read-only, admin grants everything.
allowDefaultAdmin bool false required with defaultRole: admin Must be true when defaultRole is admin. It exists to stop a config silently granting admin to every authenticated user when no group gating is configured.
name: authentik-oidc
type: oidc
oidc:
  issuerURL: https://auth.example.com/application/o/gpm/
  clientID: gpm
  clientSecret: ${FILE:/run/secrets/oidc_secret}
roleMapping:
  adminGroups: [proxy-admins]      # no defaultRole -> anyone not in the group is denied

The OIDC client reads claims from the ID token, so if your provider only emits groups via the userinfo endpoint you must configure it to include the groups claim in the ID token.

SSO session lifetime / offboarding. For type: oidc hosts, gpm mints a signed __Host-gpm_sso session cookie with a 1-hour absolute TTL (not a sliding window, it is not extended by activity). On expiry the next request re-runs the OIDC flow against the IdP, which is silent when the IdP session is still valid and re-checks group membership. This bounds the offboarding window: a user removed from a group or disabled at the IdP loses access at the proxy listeners within an hour, without gpm holding server-side session state. There is no per-user revocation, but there is a global one: POST /api/sso/revoke (admin-gated; also a button under Settings) moves a signed revocation watermark to "now", invalidating every outstanding SSO session on this instance immediately: users re-authenticate at the IdP on their next request. The watermark persists next to the signing key, so it survives restarts. Scope note: the watermark is read at startup, so a second gpm instance sharing the same signing key only picks a revocation up on its next restart. For a single-user cutoff, revoke at the IdP; access ends at that user's next hourly re-auth.

Deprecated fields

Field Status Reason
oidc.trustIdPMFA Deprecated, ignored It was meant to suppress a second local MFA prompt by trusting the IdP's acr/amr. gpm has no local TOTP prompt to suppress and never reads acr/amr, so the flag decides nothing. Still parsed; see FEATURES.md for the roadmap item that would give it meaning.