# OIDC SPA

## Documentation

- [What This Is](https://docs.oidc-spa.dev/readme.md)
- [Getting Started](https://docs.oidc-spa.dev/integration-guides/example-setups.md): Let's get your app authenticated!
- [Framework Agnostic Adapter](https://docs.oidc-spa.dev/integration-guides/usage.md)
- [TanStack Router/Start](https://docs.oidc-spa.dev/integration-guides/tanstack-router-start.md)
- [TanStack Start](https://docs.oidc-spa.dev/integration-guides/tanstack-router-start/tanstack-start.md)
- [TanStack Router](https://docs.oidc-spa.dev/integration-guides/tanstack-router-start/react-router.md)
- [React Router](https://docs.oidc-spa.dev/integration-guides/react-router.md)
- [Angular](https://docs.oidc-spa.dev/integration-guides/angular.md)
- [Next.js](https://docs.oidc-spa.dev/integration-guides/next.js.md): Use oidc-spa in a Next.js App Router app.
- [Nuxt](https://docs.oidc-spa.dev/integration-guides/nuxt.md): Use oidc-spa in a pure Nuxt SPA app.
- [Backend Token Validation](https://docs.oidc-spa.dev/integration-guides/backend-token-validation.md): Creating a OAuth2 enabled resource server.
- [tRPC](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/trpc.md)
- [NestJS](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/nestjs.md)
- [TanStack Start](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/tanstack-start.md)
- [Express.js](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/express.js.md)
- [Koa](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/koa.md)
- [Fastify](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/fastify.md)
- [Hono](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/hono.md)
- [node:http](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/node-http.md)
- [Deno.serve](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/deno.serve.md)
- [Bun.serve](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/bun.serve.md)
- [Cloudflare Workers](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/cloudflare-workers.md)
- [Vercel Edge](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/vercel-edge.md)
- [WebSocket](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/websocket.md): Securing a WebSocket connection
- [Mock Modes](https://docs.oidc-spa.dev/integration-guides/backend-token-validation/mock-modes.md)
- [Provider configuration](https://docs.oidc-spa.dev/providers-configuration/provider-configuration.md)
- [Keycloak](https://docs.oidc-spa.dev/providers-configuration/keycloak.md)
- [Auth0](https://docs.oidc-spa.dev/providers-configuration/auth0.md)
- [Microsoft Entra ID](https://docs.oidc-spa.dev/providers-configuration/microsoft-entra-id.md): Formerly Azure Active Directory
- [Clerk](https://docs.oidc-spa.dev/providers-configuration/clerk.md)
- [Google OAuth 2.0](https://docs.oidc-spa.dev/providers-configuration/google-oauth.md): Implement "Login with Google"
- [Other OIDC Provider](https://docs.oidc-spa.dev/providers-configuration/other.md)
- [The User Object](https://docs.oidc-spa.dev/features/user.md)
- [Auto Login](https://docs.oidc-spa.dev/features/auto-login.md): Enforce authentication everywhere in your app.
- [Auto Logout](https://docs.oidc-spa.dev/features/auto-logout.md)
- [Debug and Error Handling](https://docs.oidc-spa.dev/features/error-management.md): Gracefully handle authentication issues
- [Error Handling - No AutoLogin](https://docs.oidc-spa.dev/features/error-management/error-handling-no-autologin.md)
- [Error Handling - With AutoLogin](https://docs.oidc-spa.dev/features/error-management/error-handling-with-autologin.md)
- [Non Blocking Rendering](https://docs.oidc-spa.dev/features/non-blocking-rendering.md)
- [Talking to multiple APIs (with different access tokens)](https://docs.oidc-spa.dev/features/talking-to-multiple-apis-with-different-access-tokens.md)
- [Tokens Renewal](https://docs.oidc-spa.dev/features/tokens-renewal.md)
- [User Account Management](https://docs.oidc-spa.dev/features/user-account-management.md)
- [User Session Initialization](https://docs.oidc-spa.dev/features/user-session-initialization.md)
- [Keycloak Utils](https://docs.oidc-spa.dev/features/keycloak-utils.md)
- [Overview](https://docs.oidc-spa.dev/security-features/overview.md): How oidc-spa mitigates the risks of token exposure
- [Browser Runtime Freeze](https://docs.oidc-spa.dev/security-features/browser-runtime-freeze.md): Ensuring the integrity of the browser runtime environment.
- [DPoP](https://docs.oidc-spa.dev/security-features/dpop.md): OAuth 2.0 Demonstrating Proof-of-Possession
- [Token Substitution](https://docs.oidc-spa.dev/security-features/token-substitution.md)
- [Migrating from Keycloak-js](https://docs.oidc-spa.dev/resources/migrating-from-keycloak-js.md): Polyfilling keycloak-js with oidc-spa
- [Third‑party cookies and session restoration](https://docs.oidc-spa.dev/resources/third-party-cookies-and-session-restoration.md)
- [CSP Configuration](https://docs.oidc-spa.dev/resources/csp-configuration.md)
- [Why No Client Secret?](https://docs.oidc-spa.dev/resources/why-no-client-secret.md): Why Doesn't oidc-spa Require a Client Secret?
- [End of third-party cookies](https://docs.oidc-spa.dev/resources/end-of-third-party-cookies.md)
- [iframe related issues](https://docs.oidc-spa.dev/resources/iframe-related-issues.md)
- [JWT Of the Access Token](https://docs.oidc-spa.dev/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
- [Bundle Size](https://docs.oidc-spa.dev/resources/bundle-size.md): Understanding oidc-spa’s impact on your bundle size
- [Discord Server](https://docs.oidc-spa.dev/resources/discord-server.md)
- [Sponsors](https://docs.oidc-spa.dev/sponsors.md): Backers of the project

* [What This Is](https://docs.oidc-spa.dev/v9/readme.md)
* [Getting Started](https://docs.oidc-spa.dev/v9/integration-guides/example-setups.md): Let's get your app authenticated!
* [Framework Agnostic Adapter](https://docs.oidc-spa.dev/v9/integration-guides/usage.md)
* [TanStack Router/Start](https://docs.oidc-spa.dev/v9/integration-guides/tanstack-router-start.md)
* [TanStack Start](https://docs.oidc-spa.dev/v9/integration-guides/tanstack-router-start/tanstack-start.md)
* [TanStack Router](https://docs.oidc-spa.dev/v9/integration-guides/tanstack-router-start/react-router.md)
* [React Router](https://docs.oidc-spa.dev/v9/integration-guides/react-router.md)
* [Angular](https://docs.oidc-spa.dev/v9/integration-guides/angular.md)
* [Backend Token Validation](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation.md): Creating a OAuth2 enabled resource server.
* [tRPC](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/trpc.md)
* [NestJS](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/nestjs.md)
* [TanStack Start](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/tanstack-start.md)
* [Express.js](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/express.js.md)
* [Koa](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/koa.md)
* [Fastify](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/fastify.md)
* [Hono](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/hono.md)
* [node:http](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/node-http.md)
* [Deno.serve](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/deno.serve.md)
* [Bun.serve](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/bun.serve.md)
* [Cloudflare Workers](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/cloudflare-workers.md)
* [Vercel Edge](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/vercel-edge.md)
* [WebSocket](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/websocket.md): Securing a WebSocket connection
* [Mock Modes](https://docs.oidc-spa.dev/v9/integration-guides/backend-token-validation/mock-modes.md)
* [Provider configuration](https://docs.oidc-spa.dev/v9/providers-configuration/provider-configuration.md)
* [Keycloak](https://docs.oidc-spa.dev/v9/providers-configuration/keycloak.md)
* [Auth0](https://docs.oidc-spa.dev/v9/providers-configuration/auth0.md)
* [Microsoft Entra ID](https://docs.oidc-spa.dev/v9/providers-configuration/microsoft-entra-id.md): Formerly Azure Active Directory
* [Clerk](https://docs.oidc-spa.dev/v9/providers-configuration/clerk.md)
* [Google OAuth 2.0](https://docs.oidc-spa.dev/v9/providers-configuration/google-oauth.md): Implement "Login with Google"
* [Other OIDC Provider](https://docs.oidc-spa.dev/v9/providers-configuration/other.md)
* [Auto Login](https://docs.oidc-spa.dev/v9/features/auto-login.md): Enforce authentication everywhere in your app.
* [Auto Logout](https://docs.oidc-spa.dev/v9/features/auto-logout.md)
* [Debug and Error Handling](https://docs.oidc-spa.dev/v9/features/error-management.md): Gracefully handle authentication issues
* [Error Handling - No AutoLogin](https://docs.oidc-spa.dev/v9/features/error-management/error-handling-no-autologin.md)
* [Error Handling - With AutoLogin](https://docs.oidc-spa.dev/v9/features/error-management/error-handling-with-autologin.md)
* [Non Blocking Rendering](https://docs.oidc-spa.dev/v9/features/non-blocking-rendering.md)
* [Talking to multiple APIs (with different access tokens)](https://docs.oidc-spa.dev/v9/features/talking-to-multiple-apis-with-different-access-tokens.md)
* [Tokens Renewal](https://docs.oidc-spa.dev/v9/features/tokens-renewal.md)
* [User Session Initialization](https://docs.oidc-spa.dev/v9/features/user-session-initialization.md)
* [User Account Management](https://docs.oidc-spa.dev/v9/features/user-account-management.md)
* [Keycloak Utils](https://docs.oidc-spa.dev/v9/features/keycloak-utils.md)
* [Overview](https://docs.oidc-spa.dev/v9/security-features/overview.md): How oidc-spa mitigates the risks of token exposure
* [Browser Runtime Freeze](https://docs.oidc-spa.dev/v9/security-features/browser-runtime-freeze.md): Ensuring the integrity of the browser runtime environment.
* [DPoP](https://docs.oidc-spa.dev/v9/security-features/dpop.md): OAuth 2.0 Demonstrating Proof-of-Possession
* [Token Substitution](https://docs.oidc-spa.dev/v9/security-features/token-substitution.md)
* [Migrating from Keycloak-js](https://docs.oidc-spa.dev/v9/resources/migrating-from-keycloak-js.md)
* [Third‑party cookies and session restoration](https://docs.oidc-spa.dev/v9/resources/third-party-cookies-and-session-restoration.md)
* [CSP Configuration](https://docs.oidc-spa.dev/v9/resources/csp-configuration.md)
* [Why No Client Secret?](https://docs.oidc-spa.dev/v9/resources/why-no-client-secret.md): Why Doesn't oidc-spa Require a Client Secret?
* [End of third-party cookies](https://docs.oidc-spa.dev/v9/resources/end-of-third-party-cookies.md)
* [iframe related issues](https://docs.oidc-spa.dev/v9/resources/iframe-related-issues.md)
* [JWT Of the Access Token](https://docs.oidc-spa.dev/v9/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
* [Bundle Size](https://docs.oidc-spa.dev/v9/resources/bundle-size.md): Understanding oidc-spa’s impact on your bundle size
* [Discord Server](https://docs.oidc-spa.dev/v9/resources/discord-server.md)
* [Sponsors](https://docs.oidc-spa.dev/v9/sponsors.md): Backers of the project

- [Getting Started](https://docs.oidc-spa.dev/v8/readme.md)
- [Integration](https://docs.oidc-spa.dev/v8/integration-guides/example-setups.md)
- [Framework Agnostic Adapter](https://docs.oidc-spa.dev/v8/integration-guides/usage.md)
- [TanStack Router/Start](https://docs.oidc-spa.dev/v8/integration-guides/tanstack-router-start.md)
- [TanStack Start](https://docs.oidc-spa.dev/v8/integration-guides/tanstack-router-start/tanstack-start.md)
- [TanStack Router](https://docs.oidc-spa.dev/v8/integration-guides/tanstack-router-start/react-router.md)
- [React Router](https://docs.oidc-spa.dev/v8/integration-guides/react-router.md)
- [Angular](https://docs.oidc-spa.dev/v8/integration-guides/angular.md)
- [Backend Token Validation](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation.md): Creating a OAuth2 enabled resource server.
- [tRPC](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/trpc.md)
- [NestJS](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/nestjs.md)
- [TanStack Start](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/tanstack-start.md)
- [Express.js](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/express.js.md)
- [Koa](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/koa.md)
- [Fastify](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/fastify.md)
- [Hono](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/hono.md)
- [node:http](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/node-http.md)
- [Deno.serve](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/deno.serve.md)
- [Bun.serve](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/bun.serve.md)
- [Cloudflare Workers](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/cloudflare-workers.md)
- [Vercel Edge](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/vercel-edge.md)
- [WebSocket](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/websocket.md): Securing a WebSocket connection
- [Mock Modes](https://docs.oidc-spa.dev/v8/integration-guides/backend-token-validation/mock-modes.md)
- [Provider configuration](https://docs.oidc-spa.dev/v8/providers-configuration/provider-configuration.md)
- [Keycloak](https://docs.oidc-spa.dev/v8/providers-configuration/keycloak.md)
- [Auth0](https://docs.oidc-spa.dev/v8/providers-configuration/auth0.md)
- [Microsoft Entra ID](https://docs.oidc-spa.dev/v8/providers-configuration/microsoft-entra-id.md): Formerly Azure Active Directory
- [Clerk](https://docs.oidc-spa.dev/v8/providers-configuration/clerk.md)
- [Google OAuth 2.0](https://docs.oidc-spa.dev/v8/providers-configuration/google-oauth.md): Implement "Login with Google"
- [Other OIDC Provider](https://docs.oidc-spa.dev/v8/providers-configuration/other.md)
- [Auto Login](https://docs.oidc-spa.dev/v8/features/auto-login.md): Enforce authentication everywhere in your app.
- [Auto Logout](https://docs.oidc-spa.dev/v8/features/auto-logout.md)
- [DPoP](https://docs.oidc-spa.dev/v8/features/dpop.md): OAuth 2.0 Demonstrating Proof-of-Possession
- [Debug and Error Handling](https://docs.oidc-spa.dev/v8/features/error-management.md): Gracefully handle authentication issues
- [Error Handling - No AutoLogin](https://docs.oidc-spa.dev/v8/features/error-management/error-handling-no-autologin.md)
- [Error Handling - With AutoLogin](https://docs.oidc-spa.dev/v8/features/error-management/error-handling-with-autologin.md)
- [Non Blocking Rendering](https://docs.oidc-spa.dev/v8/features/non-blocking-rendering.md)
- [Talking to multiple APIs (with different access tokens)](https://docs.oidc-spa.dev/v8/features/talking-to-multiple-apis-with-different-access-tokens.md)
- [Tokens Renewal](https://docs.oidc-spa.dev/v8/features/tokens-renewal.md)
- [User Account Management](https://docs.oidc-spa.dev/v8/features/user-account-management.md)
- [User Session Initialization](https://docs.oidc-spa.dev/v8/features/user-session-initialization.md)
- [Migrating from Keycloak-js](https://docs.oidc-spa.dev/v8/resources/migrating-from-keycloak-js.md)
- [Third‑party cookies and session restoration](https://docs.oidc-spa.dev/v8/resources/third-party-cookies-and-session-restoration.md)
- [CSP Configuration](https://docs.oidc-spa.dev/v8/resources/csp-configuration.md)
- [Why No Client Secret?](https://docs.oidc-spa.dev/v8/resources/why-no-client-secret.md): Why Doesn't oidc-spa Require a Client Secret?
- [Token Exfiltration Defence](https://docs.oidc-spa.dev/v8/resources/token-exfiltration-defence.md): How oidc-spa mitigates the risks of token exposure
- [Fixing Crypto.subtle is available only in secure contexts (HTTPS)](https://docs.oidc-spa.dev/v8/resources/fixing-crypto.subtle-is-available-only-in-secure-contexts-https.md)
- [End of third-party cookies](https://docs.oidc-spa.dev/v8/resources/end-of-third-party-cookies.md)
- [iframe related issues](https://docs.oidc-spa.dev/v8/resources/iframe-related-issues.md)
- [JWT Of the Access Token](https://docs.oidc-spa.dev/v8/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
- [Discord Server](https://docs.oidc-spa.dev/v8/resources/discord-server.md)
- [Blocked Monkey Patching](https://docs.oidc-spa.dev/v8/resources/blocked-monkey-patching.md)
- [Sponsors](https://docs.oidc-spa.dev/v8/sponsors.md): Backers of the project

* [Installation](https://docs.oidc-spa.dev/v7/readme.md)
* [Basic Usage](https://docs.oidc-spa.dev/v7/usage.md): Let's get your App authenticated!
* [Web API](https://docs.oidc-spa.dev/v7/web-api.md)
* [Auto Login](https://docs.oidc-spa.dev/v7/auto-login.md): Enforce authentication everywhere in your app.
* [Auto Logout](https://docs.oidc-spa.dev/v7/auto-logout.md): Automatically logging out your user after a set period of inactivity on your app (they dont move the mouse or press any key on the keyboard for a while)
* [Error Management](https://docs.oidc-spa.dev/v7/error-management.md): Gracefully handle authentication issues
* [Mock](https://docs.oidc-spa.dev/v7/mock.md)
* [User Account Management](https://docs.oidc-spa.dev/v7/user-account-management.md)
* [User Session Initialization](https://docs.oidc-spa.dev/v7/user-session-initialization.md)
* [Tokens Renewal](https://docs.oidc-spa.dev/v7/tokens-renewal.md)
* [Setup Guides](https://docs.oidc-spa.dev/v7/setup-guides/example-setups.md)
* [React Router](https://docs.oidc-spa.dev/v7/setup-guides/react-router.md)
* [TanStack Router](https://docs.oidc-spa.dev/v7/setup-guides/tanstack-router.md): Vite + TypeScript + React + Tanstack Router
* [Full-Stack with Node REST API](https://docs.oidc-spa.dev/v7/setup-guides/tanstack-router-+-node-rest-api.md): A full-stack example covering both the backend and frontend
* [Multi Providers - Login with Google or Microsoft](https://docs.oidc-spa.dev/v7/setup-guides/multi-providers.md)
* [Provider configuration](https://docs.oidc-spa.dev/v7/providers-configuration/provider-configuration.md)
* [Keycloak](https://docs.oidc-spa.dev/v7/providers-configuration/keycloak.md)
* [Auth0](https://docs.oidc-spa.dev/v7/providers-configuration/auth0.md)
* [Microsoft Entra ID](https://docs.oidc-spa.dev/v7/providers-configuration/microsoft-entra-id.md): Formerly Azure Active Directory
* [Clerk](https://docs.oidc-spa.dev/v7/providers-configuration/clerk.md)
* [Google OAuth 2.0](https://docs.oidc-spa.dev/v7/providers-configuration/google-oauth.md): Implement "Login with Google"
* [Other OIDC Provider](https://docs.oidc-spa.dev/v7/providers-configuration/other.md)
* [Why No Client Secret?](https://docs.oidc-spa.dev/v7/resources/why-no-client-secret.md): Why Doesn't oidc-spa Require a Client Secret?
* [End of third-party cookies](https://docs.oidc-spa.dev/v7/resources/end-of-third-party-cookies.md)
* [iframe related issues](https://docs.oidc-spa.dev/v7/resources/iframe-related-issues.md)
* [JWT Of the Access Token](https://docs.oidc-spa.dev/v7/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
* [Discord Server](https://docs.oidc-spa.dev/v7/resources/discord-server.md)
* [User Impersonation](https://docs.oidc-spa.dev/v7/user-impersonation.md)
* [Sponsors](https://docs.oidc-spa.dev/v7/sponsors.md): Backers of the project
* [Why oidcEarlyInit](https://docs.oidc-spa.dev/v7/why-oidcearlyinit.md)

- [Installation](https://docs.oidc-spa.dev/v6/readme.md)
- [Basic Usage](https://docs.oidc-spa.dev/v6/usage.md): Let's get your App authenticated!
- [Web API](https://docs.oidc-spa.dev/v6/web-api.md)
- [Auto Login](https://docs.oidc-spa.dev/v6/auto-login.md): Enforce authentication everywhere in your app.
- [Auto Logout](https://docs.oidc-spa.dev/v6/auto-logout.md): Automatically logging out your user after a set period of inactivity on your app (they dont move the mouse or press any key on the keyboard for a while)
- [Error Management](https://docs.oidc-spa.dev/v6/error-management.md): Gracefully handle authentication issues
- [Mock](https://docs.oidc-spa.dev/v6/mock.md)
- [User Account Management](https://docs.oidc-spa.dev/v6/user-account-management.md)
- [User Session Initialization](https://docs.oidc-spa.dev/v6/user-session-initialization.md)
- [Tokens Renewal](https://docs.oidc-spa.dev/v6/tokens-renewal.md)
- [Setup Guides](https://docs.oidc-spa.dev/v6/setup-guides/example-setups.md)
- [React Router](https://docs.oidc-spa.dev/v6/setup-guides/react-router.md)
- [TanStack Router](https://docs.oidc-spa.dev/v6/setup-guides/tanstack-router.md): Vite + TypeScript + React + Tanstack Router
- [Full-Stack with Node REST API](https://docs.oidc-spa.dev/v6/setup-guides/tanstack-router-+-node-rest-api.md): A full-stack example covering both the backend and frontend
- [Multi Providers - Login with Google or Microsoft](https://docs.oidc-spa.dev/v6/setup-guides/multi-providers.md)
- [Provider configuration](https://docs.oidc-spa.dev/v6/providers-configuration/provider-configuration.md)
- [Keycloak](https://docs.oidc-spa.dev/v6/providers-configuration/keycloak.md)
- [Auth0](https://docs.oidc-spa.dev/v6/providers-configuration/auth0.md)
- [Microsoft Entra ID](https://docs.oidc-spa.dev/v6/providers-configuration/microsoft-entra-id.md): Formerly Azure Active Directory
- [Google OAuth 2.0](https://docs.oidc-spa.dev/v6/providers-configuration/google-oauth.md): Implement "Login with Google"
- [Other OIDC Provider](https://docs.oidc-spa.dev/v6/providers-configuration/other.md)
- [Why No Client Secret?](https://docs.oidc-spa.dev/v6/resources/why-no-client-secret.md): Why Doesn't oidc-spa Require a Client Secret?
- [End of third-party cookies](https://docs.oidc-spa.dev/v6/resources/end-of-third-party-cookies.md)
- [iframe related issues](https://docs.oidc-spa.dev/v6/resources/iframe-related-issues.md)
- [JWT Of the Access Token](https://docs.oidc-spa.dev/v6/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
- [Discord Server](https://docs.oidc-spa.dev/v6/resources/discord-server.md)
- [User Impersonation](https://docs.oidc-spa.dev/v6/user-impersonation.md)
- [Sponsors](https://docs.oidc-spa.dev/v6/sponsors.md): Backers of the project
- [Why oidcEarlyInit](https://docs.oidc-spa.dev/v6/why-oidcearlyinit.md)

* [Installation](https://docs.oidc-spa.dev/v5/documentation/readme.md)
* [Basic Usage](https://docs.oidc-spa.dev/v5/documentation/usage.md): Let's get your App authenticated!
* [Web API](https://docs.oidc-spa.dev/v5/documentation/web-api.md)
* [Auto Logout](https://docs.oidc-spa.dev/v5/documentation/auto-logout.md): Automatically logging out your user after a set period of inactivity on your app (they dont move the mouse or press any key on the keyboard for a while)
* [Error Management](https://docs.oidc-spa.dev/v5/documentation/error-management.md)
* [Mock](https://docs.oidc-spa.dev/v5/documentation/mock.md)
* [Tokens Renewal](https://docs.oidc-spa.dev/v5/documentation/tokens-renewal.md)
* [Globally Enforce Authentication](https://docs.oidc-spa.dev/v5/documentation/globally-enforce-authentication.md)
* [User Account Management](https://docs.oidc-spa.dev/v5/documentation/user-account-management.md)
* [Doing Something Only When a New Session is Created](https://docs.oidc-spa.dev/v5/documentation/doing-something-only-when-a-new-session-is-created.md)
* [User impersonation](https://docs.oidc-spa.dev/v5/documentation/user-impersonation.md): Enable the admin of your application to login as a given user.
* [Disabeling token persistance](https://docs.oidc-spa.dev/v5/documentation/disabeling-token-persistance.md)
* [TanStack Router](https://docs.oidc-spa.dev/v5/example-setups/tanstack-router.md): Vite + TypeScript + React + Tanstack Router
* [React Router](https://docs.oidc-spa.dev/v5/example-setups/react-router.md)
* [Keycloak Configuration Guide](https://docs.oidc-spa.dev/v5/resources/usage-with-keycloak.md): Let's spin up a Keycloak server and configure it for your webapp!
* [End of third-party cookies](https://docs.oidc-spa.dev/v5/resources/end-of-third-party-cookies.md)
* [JWT Of the Access Token](https://docs.oidc-spa.dev/v5/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
* [Discord Server](https://docs.oidc-spa.dev/v5/resources/discord-server.md)
* [Migration Guides](https://docs.oidc-spa.dev/v5/resources/migration-guides.md)
* [v4 -> v5](https://docs.oidc-spa.dev/v5/resources/migration-guides/v4-greater-than-v5.md)
* [Sponsors](https://docs.oidc-spa.dev/v5/sponsors.md): Backers of the project

- [Installation](https://docs.oidc-spa.dev/v4/documentation/readme.md)
- [Basic Usage](https://docs.oidc-spa.dev/v4/documentation/usage.md): Let's get your App authenticated!
- [Web API](https://docs.oidc-spa.dev/v4/documentation/web-api.md)
- [Auto Logout](https://docs.oidc-spa.dev/v4/documentation/auto-logout.md): Automatically logging out your user after a set period of inactivity on your app (they dont move the mouse or press any key on the keyboard for a while)
- [Error Management](https://docs.oidc-spa.dev/v4/documentation/error-management.md)
- [Mock](https://docs.oidc-spa.dev/v4/documentation/mock.md)
- [Tokens Renewal](https://docs.oidc-spa.dev/v4/documentation/tokens-renewal.md)
- [Globally Enforce Authentication](https://docs.oidc-spa.dev/v4/documentation/globally-enforce-authentication.md)
- [User Account Management](https://docs.oidc-spa.dev/v4/documentation/user-account-management.md)
- [Doing Something Only When a New Session is Created](https://docs.oidc-spa.dev/v4/documentation/doing-something-only-when-a-new-session-is-created.md)
- [TanStack Router](https://docs.oidc-spa.dev/v4/example-setups/tanstack-router.md): Vite + TypeScript + React + Tanstack Router
- [React Router](https://docs.oidc-spa.dev/v4/example-setups/react-router.md)
- [Keycloak Configuration Guide](https://docs.oidc-spa.dev/v4/resources/usage-with-keycloak.md): Let's spin up a Keycloak server and configure it for your webapp!
- [Accessing Keycloak Groups](https://docs.oidc-spa.dev/v4/resources/accessing-keycloak-groups.md)
- [End of third-party cookies](https://docs.oidc-spa.dev/v4/resources/end-of-third-party-cookies.md)
- [JWT Of the Access Token](https://docs.oidc-spa.dev/v4/resources/jwt-of-the-access-token.md): And why it's not supposed to be read on the client side.
- [Discord Server](https://docs.oidc-spa.dev/v4/resources/discord-server.md)
- [Sponsors](https://docs.oidc-spa.dev/v4/sponsors.md): Friend of the project

* [Overview](https://docs.oidc-spa.dev/v3/getting-started/overview.md): A solution to implement user authentication in your webapplication
* [Installation](https://docs.oidc-spa.dev/v3/getting-started/installation.md)
* [Usage](https://docs.oidc-spa.dev/v3/getting-started/usage.md): Let's get your App authenticated!
* [Usage with Keycloak](https://docs.oidc-spa.dev/v3/getting-started/usage-with-keycloak.md): Let's spin up a Keycloak server and configure it for your webapp!
* [React Router](https://docs.oidc-spa.dev/v3/example-setups/react-router.md)
* [Tanstack Router](https://docs.oidc-spa.dev/v3/example-setups/tanstack-router.md)
* [Vanilla API](https://docs.oidc-spa.dev/v3/api-reference/vanilla-api.md)
* [createOidc()](https://docs.oidc-spa.dev/v3/api-reference/vanilla-api/createoidc.md): The createOidc() function is a function that assists in creating an OpenID Connect (OIDC) client, which can be utilized in your application for authentication purposes.
* [React API](https://docs.oidc-spa.dev/v3/api-reference/react-api.md)
* [createOidcProvider](https://docs.oidc-spa.dev/v3/api-reference/react-api/createoidcprovider.md)
* [createUseOidc](https://docs.oidc-spa.dev/v3/api-reference/react-api/createuseoidc.md)

## Release Notes & Upgrade Instructions

- [v9 -> v10](https://docs.oidc-spa.dev/release-notes/v9-greater-than-v10.md)
- [v8 -> v10](https://docs.oidc-spa.dev/release-notes/v8-greater-than-v10.md)
- [v8 -> v9](https://docs.oidc-spa.dev/release-notes/v8-greater-than-v9.md)
- [v7 -> v8](https://docs.oidc-spa.dev/release-notes/v7-greater-than-v8.md)
- [v6 -> v7](https://docs.oidc-spa.dev/release-notes/readme.md)
- [v5 -> v6](https://docs.oidc-spa.dev/release-notes/readme-1.md)
- [v4 -> v5](https://docs.oidc-spa.dev/release-notes/v4-greater-than-v5.md)
- [Reading decodedAccessToken within shouldInjectAccessToken()](https://docs.oidc-spa.dev/release-notes/reading-decodedaccesstoken-within-shouldinjectaccesstoken.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.oidc-spa.dev/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
