Class IdentityProviderFactory

Creates an OIDC Provider based on the provided configuration and parameters. The provider will be cached and returned on subsequent calls. Cookie and JWT keys will be stored in an internal storage so they can be re-used over multiple threads. Necessary claims for Solid OIDC interactions will be added. Routes will be updated based on the baseUrl and oidcPath.

Hierarchy

  • IdentityProviderFactory

Implements

Constructors

Properties

adapterFactory: AdapterFactory
baseUrl: string
config: Configuration
credentialStorage: KeyValueStorage<string, ClientCredentials>
errorHandler: ErrorHandler
interactionHandler: InteractionHandler
jwkGenerator: JwkGenerator
logger: Logger = ...
oidcPath: string
provider?: Provider
responseWriter: ResponseWriter
showStackTrace: boolean
storage: KeyValueStorage<string, unknown>

Methods

  • In the configureErrors function below, we configure the renderError function of the provider configuration. This function is called by the OIDC provider library to render errors, but only does this if the accept header is HTML. Otherwise, it just returns the error object itself as a JSON object. See https://github.com/panva/node-oidc-provider/blob/0fcc112e0a95b3b2dae4eba6da812253277567c9/lib/shared/error_handler.js#L48-L52.

    In this function we override the ctx.accepts function to make the above code think HTML is always requested there. This way we have full control over error representation as configured in configureErrors. We still check the accept headers ourselves so there still is content negotiation on the output, the client will not simply always receive HTML.

    Should this part of the OIDC library code ever change, our function will break, at which point behaviour will simply revert to what it was before.

    Parameters

    • provider: Provider

    Returns void

  • Creates the route string as required by the oidc-provider library. In case base URL is http://test.com/foo/, oidcPath is /idp and relative is device/auth, this would result in /foo/idp/device/auth.

    Parameters

    • relative: string

    Returns string

  • Checks if the given token is an access token. The AccessToken interface is not exported so we have to access it like this.

    Parameters

    • token: any

    Returns token is undefined | AccessToken