Fastify auth plugin for openid-client
npm install fastify-openid-authfastify-openid-auth is a Fastify plugin for OpenID Connect authentication using openid-client. It supports both bearer token and cookie-based authentication, with flexible token management and full TypeScript support.
- OpenID Connect authentication for Fastify
- Bearer token and cookie-based authentication flows
- Customizable token reading/writing (headers, cookies, session)
- Decorates Fastify instance with authentication handlers: login, verify, refresh, logout
- TypeScript types for handlers and tokens
``bash`
npm install fastify-openid-auth
The core of this library is the openIDHandlersFactory, which creates handlers for OpenID Connect authentication. You can use it directly for custom integration, testing, or advanced scenarios:
`ts
import { openIDHandlersFactory } from 'fastify-openid-auth'
const config = { / openid-client config / }
const { login, verify, refresh, logout } = openIDHandlersFactory(config, {
login: { / login handler options / },
verify: { / verify handler options / },
refresh: { / refresh handler options / },
logout: { / logout handler options / }
})
// Use login, verify, refresh, logout as Fastify route handlers
`
For most users, it's easiest to use the Fastify plugin wrapper, which registers and decorates your Fastify instance with the authentication handlers:
`ts
import Fastify from 'fastify'
import openIDAuthPlugin from 'fastify-openid-auth'
const fastify = Fastify()
const AUTH_HANDLERS = Symbol.for('auth-handlers')
fastify.register(openIDAuthPlugin, {
decorator: AUTH_HANDLERS,
config: { / openid-client config / },
login: { / login handler options / },
verify: { / verify handler options / },
refresh: { / refresh handler options / },
logout: { / logout handler options / }
})
const { login, verify, refresh, logout } = fastify[AUTH_HANDLERS]
// Use login, verify, refresh, logout as Fastify route handlers
`
- decorator: string or symbol to decorate Fastify instanceconfig
- : openid-client configuration objectlogin
- , verify, refresh, logout: handler options
You provide functions to read and write tokens, e.g.:
- Bearer tokens: Read from Authorization header
- Cookie tokens: Read/write from cookies or session
See the example projects for real implementations.
- examples/basic — Bearer token authentication
- examples/cookies` — Cookie token authentication
MIT