npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ctbto/oidc-provider

v5.5.6

Published

OpenID Provider (OP) implementation for Node.js OpenID Connect servers.

Downloads

3

Readme

oidc-provider

build codecov

oidc-provider is an OpenID Provider implementation of OpenID Connect. It allows to export a complete mountable or standalone OpenID Provider implementation. This implementation does not dictate a fixed data model or persistence store, instead, you must provide adapters for these. A generic in-memory adapter is available to get you started as well as feature-less dev-only views to be able to get off the ground.

Table of Contents

Implemented specs & features

The following specifications are implemented by oidc-provider. Note that not all features are enabled by default, check the configuration section on how to enable them.

The following drafts/experimental specifications are implemented by oidc-provider.

Updates to draft and experimental specification versions are released as MINOR library versions, if you utilize these specification implementations consider using the tilde ~ operator in your package.json since breaking changes may be introduced as part of these version updates.

Missing a feature? - If it wasn't already discussed before, ask for it.
Found a bug? - report it.

Certification


Filip Skokan has certified that oidc-provider conforms to the OP Basic, OP Implicit, OP Hybrid, OP Config, OP Dynamic and OP Form Post profiles of the OpenID Connect™ protocol.

build

If you want to quickly add OpenID Connect authentication to Node.js apps, feel free to check out Auth0's Node.js SDK and free plan at auth0.com/overview.

If you or your business use oidc-provider, please consider becoming a Patron so I can continue maintaining it and adding new features carefree. You may also donate one-time via PayPal.

Get started

You may check the example folder or follow a step by step example to see which of those fits your desired application setup.

The examples bundled in this repo's codebase are available for you to experiment with here. Dynamic Registration is open, you can literally register any client you want there. An example client using this provider is available here (uses openid-client).

Also be sure to check the available configuration docs section.

Configuration and Initialization

oidc-provider allows to be extended and configured in various ways to fit a variety of uses. See the available configuration.

const Provider = require('oidc-provider');
const configuration = {
  // ... see available options /docs/configuration.md
};
const clients = [{
  client_id: 'foo',
  client_secret: 'bar',
  redirect_uris: ['http://lvh.me:8080/cb'],
  // + other client properties
}];

const oidc = new Provider('http://localhost:3000', configuration);

let server;
(async () => {
  await oidc.initialize({ clients });
  // express/nodejs style application callback (req, res, next) for use with express apps, see /examples/express.js
  oidc.callback

  // koa application for use with koa apps, see /examples/koa.js
  oidc.app

  // or just expose a server standalone, see /examples/standalone.js
  server = oidc.listen(3000, () => {
    console.log('oidc-provider listening on port 3000, check http://localhost:3000/.well-known/openid-configuration');
  });
})().catch((err) => {
  if (server && server.listening) server.close();
  console.error(err);
  process.exitCode = 1;
});

Debugging

oidc-provider uses the debug module internally to log information about various states of authentication requests, errors and grants. To see all these set the DEBUG environment variable to oidc-provider:* when launching your app.

There is no filter on what is included in the debug output, since it may end-user Personally identifiable information or client credentials it's use is only advised for debugging, not regular logging. Use emitted events to cherry pick the one's of interest to your flows and form your own logs aware of what should and should not be a part of a logged message.

Events

Your oidc-provider instance is an event emitter, using event handlers you can hook into the various actions and i.e. emit metrics or that react to specific triggers. In some scenarios you can even change the defined behavior.
See the list of available emitted event names and their description.