Publish the config with php artisan vendor:publish --tag=oidc-config. Every key is listed
below with its default and the environment variable that overrides it.
| Key |
Default |
Description |
issuer |
env('OIDC_ISSUER') |
Issuer URL. Falls back to app.url when null. All endpoint URLs advertised in discovery are derived from this origin. |
private_key |
env('OIDC_PRIVATE_KEY') |
RS256 private signing key as a PEM string (\n-escaped single lines are fine). See Key rotation. |
public_key |
env('OIDC_PUBLIC_KEY') |
The matching public key, published in JWKS. |
token_lifetimes.access_token |
900 (OIDC_ACCESS_TOKEN_TTL) |
Interactive (authorization_code) and refreshed access-token lifetime in seconds. |
token_lifetimes.id_token |
3600 (OIDC_ID_TOKEN_TTL) |
id_token lifetime in seconds. |
token_lifetimes.client_credentials |
3600 (OIDC_M2M_ACCESS_TOKEN_TTL) |
Machine-to-machine (client_credentials) access-token lifetime. These tokens have no refresh and no session. |
session.absolute_lifetime |
2592000 (OIDC_SESSION_ABSOLUTE_LIFETIME) |
Absolute cap on an interactive session, from login (30 days). Refresh is denied past this; the user must re-authenticate. Drives context.expires_at, the refresh deny-check, and context pruning. |
| Key |
Default |
Description |
api_guard |
env('OIDC_API_GUARD', 'oidc') |
The guard the userinfo endpoint (and resource-server routes using auth:oidc) authenticates against. Registered automatically if absent, the same way auth.guard is. |
claims_supported |
standard set |
Claims advertised in the discovery document. |
logout_redirect |
/ |
Fallback redirect after logout. |
handlers |
[] |
Sparse per-endpoint overrides, merged over the package’s built-in endpoint map. See Route handlers. |
routes.prefix |
'' |
URI prefix applied to every registered handler route. |
routes.middleware |
[] |
Middleware prepended to every registered handler route. |
| Key |
Default |
Description |
passport.token_model |
null |
A Laravel\Passport\Token subclass handed to Passport::useTokenModel(). null keeps Passport’s default model. |
passport.scopes |
[] |
API scope catalog the scope repository consults directly at enumeration time — an inline [scope => description] map or a ScopeCatalog class-string. See Scopes & claims. |
| Key |
Default |
Description |
token_exchange.enabled |
true (OIDC_TOKEN_EXCHANGE_ENABLED) |
Enables the RFC 8693 token-exchange grant. |
key_size |
2048 (OIDC_KEY_SIZE) |
RSA key size oidc:rotate-keys generates. |
additional_public_keys |
[OIDC_PREVIOUS_PUBLIC_KEY] |
Extra PEM public keys published in JWKS; defaults to the previous signing key during rotation — see Key rotation. |
Used by the two-token browser-fetch model — see Browser-fetch.
| Key |
Default |
Description |
first_party.client_id |
env('OIDC_FIRST_PARTY_CLIENT') |
The confidential client id used to mint the session root token and perform exchanges on its behalf. |
first_party.trusted |
false (OIDC_FIRST_PARTY_TRUSTED) |
Whether the first-party client is auto-consented. |
first_party.provision |
empty lists |
Extra provisioning metadata (redirect_uris, post_logout_redirect_uris, allowed_exchange_audiences) applied on top of the APP_URL-derived defaults — see First-party client provisioning. |
trusted_clients |
[] |
Additional client ids that skip the consent screen. |
login_route |
login (OIDC_LOGIN_ROUTE) |
Route name unauthenticated users are redirected to. |
session_token.ttl |
3600 (OIDC_SESSION_TOKEN_TTL) |
Root token lifetime in seconds. |
session_token.session_key |
oidc.session_token |
Session key the root token is stored under. |
session_token.refresh_skew |
60 |
Seconds before expiry at which the token is re-minted instead of reused. |
session_token.scopes |
null |
Scopes granted to the root token. null grants every non-hidden scope. |
session_token.guard |
null (OIDC_SESSION_TOKEN_GUARD) |
Guard whose login/logout owns the session token. null falls back to auth.guard, then the application default guard. Other guards never mint or revoke. |
| Key |
Default |
Description |
auth.guard |
identity (OIDC_AUTH_GUARD) |
The session guard the auth engine authenticates against. Registered automatically if absent. |
auth.provider |
users (OIDC_AUTH_PROVIDER) |
The user provider backing the guard. |
auth.home |
/dashboard (OIDC_AUTH_HOME) |
Where to send a user after a successful login/registration. |
auth.username |
email (OIDC_AUTH_USERNAME) |
The credential field used to log in. |
auth.two_factor.challenge_providers |
['totp'] |
Factor keys offered at the challenge step. |
auth.two_factor.secret_length |
16 |
TOTP secret length. |
auth.two_factor.window |
1 |
TOTP validation window. |
auth.two_factor.recovery_codes |
8 |
Number of recovery codes generated. |
auth.factors |
TOTP, recovery, WebAuthn providers |
The registered FactorProvider classes. |
| Key |
Default |
Description |
social.link_by_verified_email |
true |
Attach an upstream identity to an existing local user when the provider reports a matching verified email. |
social.auto_provision |
true |
Create a local user on first social login via the Oidc::createUsersFromSocialUsing() action. |
social.providers |
google, apple, github entries |
The upstream identity providers; each is active only once its client_id is set. See Social login. |
- The
oidc.api_guard guard uses the package’s oidc driver (the RFC 9068 resource-server guard
— see Resource servers (CheckAudience)).
- The interactive authorization and logout flows run through the
identity guard the package
registers (oidc.auth.guard).
- Signing keys are RS256 — see Key rotation. Token headers carry a
kid derived from the RFC 7638 thumbprint, matched by the JWKS endpoint.