fastify-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
npm install fastify-openid-authThe 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:
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 handlersFor most users, it's easiest to use the Fastify plugin wrapper, which registers and decorates your Fastify instance with the authentication handlers:
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 handlersdecorator: 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
Authorizationheader - Cookie tokens: Read/write from cookies or session
See the example projects for real implementations.
examples/basic— Bearer token authenticationexamples/cookies— Cookie token authentication
MIT