That said, here are some more in the space that I personally have earmarked:
- (all-in-one) jsso2[0]
- (all-in-one, embeddable) a12n-server[1]
- (embeddable) node-oidc-provider[2]
- (embeddable) node-oauth2-server[3]
- (all-in-one, embeddable) authboss[4]
- (proxy) vouch-proxy for NGINX[5]
- (proxy) Grant with support for over 200 provider (!!)[6]
[0]: https://github.com/jrockway/jsso2
[1]: https://github.com/curveball/a12n-server
[2]: https://github.com/panva/node-oidc-provider
[3]: https://github.com/oauthjs/node-oauth2-server
[4]: https://github.com/volatiletech/authboss
The only downside is that it seems to require a second DNS entry for the vouch portion of the process. Awkward configuration in some ways. But, the price is right, and the Nginx config is reasonably clean once you understand what it's doing.
Depending on your use case, for example if you only have one application, you might be better off running something embedded in your app, or independent but using the same runtime/deployment environment. Then, when you are ready to add another app or integration, you should be able to introduce a standalone auth system more easily if appropriate (because all your auth interactions should be relatively standardized). I'm a big fan of standalone auth systems as a way to simplify access control and give a single view of a user/customer, but you can also succeed using open source embedded libraries.
When the moment comes to introduce a standalone system, you should consider a few dimensions (this list pulled from a previous comment of mine: https://news.ycombinator.com/item?id=26360048 ):
These dimensions all matter to varying degrees depending on your team and needs.Disclosure: I work for https://fusionauth.io/ which has open source supporting libraries and docs, but which is itself not open source.
EDIT: added cost, operational complexity and customization to the list.