passport-generic-oauth2 v2.0.0
passport-generic-oauth2
General-purpose OAuth 2.0 authentication strategy for Passport.
This module lets you authenticate using OAuth 2.0 in your Node.js applications. By plugging into Passport, OAuth 2.0-based sign in can be easily and unobtrusively integrated into any application or framework that supports Connect-style middleware, including Express.
Note that this strategy provides generic OAuth 2.0 support. In many cases, a provider-specific strategy can be used instead, which cuts down on unnecessary configuration, and accommodates any provider-specific quirks. See the list for supported providers.
Developers who need to implement authentication against an OAuth 2.0 provider that is not already supported are encouraged to sub-class this strategy. If you choose to open source the new provider-specific strategy, please add it to the list so other people can find it.
:brain: Understanding OAuth 2.0 • :heart: Sponsors
Install
Note that oauth is a peer dependency and you may want to add the correct version you're after.
$ npm install passport-generic-oauth2 oauthor
$ yarn install passport-generic-oauth2 oauthUsage
Configure Strategy
The OAuth 2.0 authentication strategy authenticates users using a third-party
account and OAuth 2.0 tokens.  The provider's OAuth 2.0 endpoints, as well as
the client identifer and secret, are specified as options.  The strategy
requires a verify callback, which receives an access token and profile,
and calls cb providing a user.
passport.use(new OAuth2Strategy({
    authorizationURL: 'https://www.example.com/oauth2/authorize',
    tokenURL: 'https://www.example.com/oauth2/token',
    clientID: EXAMPLE_CLIENT_ID,
    clientSecret: EXAMPLE_CLIENT_SECRET,
    callbackURL: "http://localhost:3000/auth/example/callback"
  },
  function({ accessToken, refreshToken, profile }, cb) {
    User.findOrCreate({ exampleId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));Authenticate Requests
Use passport.authenticate(), specifying the 'oauth2' strategy, to
authenticate requests.
For example, as route middleware in an Express application:
app.get('/auth/example',
  passport.authenticate('oauth2'));
app.get('/auth/example/callback',
  passport.authenticate('oauth2', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });Related Modules
- passport-oauth1 — OAuth 1.0 authentication strategy
- passport-oauth2 — previous unmaintained version
- passport-http-bearer — Bearer token authentication strategy for APIs
- OAuth2orize — OAuth 2.0 authorization server toolkit
Contributing
Tests
The test suite is located in the test/ directory.  All new features are
expected to have corresponding test cases.  Ensure that the complete test suite
passes by executing:
$ yarn testCoverage
All new feature development is expected to have test coverage. Patches that increse test coverage are happily accepted. Coverage reports can be viewed by executing:
$ yarn test:coverageLicense
Copyright (c) 2022-2023 Mark Hughes [https://markhughes.dev/](https://markhughes.dev/) Copyright (c) 2011-2016 Jared Hanson [http://jaredhanson.net/](http://jaredhanson.net/)
3 years ago