Middleware
This content is for v8.x. Switch to the latest version for up-to-date documentation.
Registering module middlewares (helmet, ip-filters, rate-limiters, etc)
Section titled “Registering module middlewares (helmet, ip-filters, rate-limiters, etc)”When using provider.app or provider.callback() as a mounted application in your own koa or express
stack just follow the respective module’s documentation. However, when using the provider.app Koa
instance directly to register i.e. koa-helmet you must push the middleware in
front of oidc-provider in the middleware stack.
import helmet from 'koa-helmet'
// Correct, pushes koa-helmet at the end of the middleware stack but BEFORE oidc-provider.provider.use(helmet())
// Incorrect, pushes koa-helmet at the end of the middleware stack AFTER oidc-provider, not being// executed when errors are encountered or during actions that do not "await next()".provider.app.use(helmet())Pre- and post-middlewares
Section titled “Pre- and post-middlewares”You can push custom middleware to be executed before and after oidc-provider.
provider.use(async (ctx, next) => { /** pre-processing * you may target a specific action here by matching `ctx.path` */ console.log('pre middleware', ctx.method, ctx.path)
await next() /** post-processing * since internal route matching was already executed you may target a specific action here * checking `ctx.oidc.route`, the unique route names used are * * `authorization` * `backchannel_authentication` * `client_delete` * `client_update` * `client` * `code_verification` * `cors.device_authorization` * `cors.discovery` * `cors.introspection` * `cors.jwks` * `cors.pushed_authorization_request` * `cors.revocation` * `cors.token` * `cors.userinfo` * `device_authorization` * `device_resume` * `discovery` * `end_session_confirm` * `end_session_success` * `end_session` * `introspection` * `jwks` * `pushed_authorization_request` * `registration` * `resume` * `revocation` * `token` * `userinfo` */ console.log('post middleware', ctx.method, ctx.oidc.route)})