klapaudius/oauth-server-bundle
A Symfony bundle that turns your application into an OAuth 2.0 authorization server, handling token issuance, client and scope management, and grant flows so you can secure APIs and third-party access without building the protocol yourself.
nonce claim is table stakes — without it, conformant relying parties will reject your id_tokens or fail their security review.auth_time is the primitive that makes max_age and prompt=login enforceable — i.e. "require password again before a payout / admin action / PHI view." That's a product capability (sensitive-action gating, session freshness policies), not just a protocol checkbox.Consider adopting or upgrading when:
nonce and auth_time.max_age / prompt=login semantics for sensitive flows, and are currently faking freshness with custom session timestamps.Look elsewhere, or scope down, when:
AuthCodeInterface directly with no capacity for a maintenance touch this cycle — the interface change lands on you (see below).Upgrade caveats to price in (v6.0.0):
AuthCodeInterface gains setNonce() / setAuthTime(). Any in-house implementation of that interface breaks at the type level — mechanical to fix, but it is a breaking surface for custom storage.nonce and auth_time columns mean a database migration on your auth code table(s), across whichever Doctrine mapping you use. Schedule it; don't let it ride in a Friday deploy.auth_time is deliberately not stamped by the package — your application must set it at the point of real user authentication. That's a small but genuine integration task in your login/token controller, and it's easy to silently ship nulls if nobody owns it.For executives: This release removes a blocker on enterprise and partner sign-in. It brings our OIDC implementation in line with what buyer security teams and third-party client libraries expect, and it gives us the technical hook for "prove you re-authenticated recently" policies on sensitive actions. The cost is a small, well-understood upgrade: a schema migration and a few lines in our login flow. The alternative — building this ourselves — is security-sensitive work in the hardest part of the auth flow, and we'd own it forever.
For engineering: v6.0.0 carries nonce and auth_time on the authorization code, so we can emit correct nonce and auth_time claims in the id_token at the token endpoint. Practical impact: AuthCodeInterface has two new setters (breaks any in-house implementation), the three Doctrine mappings need a migration for nullable nonce / auth_time columns, the nonce is preserved across the consent screen for us, and we must stamp auth_time ourselves at real authentication time. Recommended sequencing: migration → interface fix-ups → token controller change → verify with a conformance client.
How can I help you explore Laravel packages today?