@boundstate/hapi-oidc-auth
v2.0.0
Published
OpenID Connect auth for Hapi
Downloads
6
Readme
hapi-oidc-auth
OpenID Connect auth plugin for hapi.
Uses token introspection to verify tokens and get their details.
npm install @boundstate/hapi-oidc-auth
Usage
import * as Hapi from '@hapi/hapi';
import {hapiOidcAuth} from '@boundstate/hapi-oidc-auth';
const server = new Hapi.Server();
await server.register({
plugin: hapiOidcAuth,
options: {
issuer: 'https://sso.example.com',
clientMetadata: {
client_id: 'my-app-id',
client_secret: 'my-app-secret',
},
},
});
Dynamic client registration
Instead of specifying the client id and secret, you may provide configuration for dynamic registration:
await server.register({
plugin: hapiOidcAuth,
options: {
issuer: 'https://sso.example.com',
clientMetadata: fs.existsSync(oidcMetadataPath)
? JSON.parse(fs.readFileSync(oidcMetadataPath, {encoding: 'utf8'}))
: undefined,
dynamicRegistration: {
initialAccessToken: 'secret',
clientMetadata: {
grant_types: […],
redirect_uris: […],
response_types: […],
},
onRegistered: (metadata: HapiOidcClientMetadata) => {
fs.writeFileSync(oidcMetadataPath, JSON.stringify(metadata, null, 2));
},
},
},
});
Plugin options
issuer
: OpenID provider URL (used for discovery)allowQueryToken
: (optional, default:false
) accept token via query parameterclientMetadata
: (optional) Client metadataclient_id
: Client IDclient_secret
: Client secret
dynamicRegistration
: (optional) dynamic registration optionsinitialAccessToken
: access token used for registrationclientMetadata
: Client metadata for registrationverify
: (optional, default:false
) verify client when server starts and attempt registration if necessaryonRegistered
: callback when registration succeeds