UNPKG

passport-oauth2-jwt-bearer

Version:

JSON Web Token (JWT) Bearer Token Profiles for OAuth 2.0 client authentication strategy for Passport.

61 lines (41 loc) 2.36 kB
passport-oauth2-jwt-bearer ========================== JSON Web Token (JWT) Bearer Token Profiles for OAuth 2.0 client authentication strategy for [Passport](https://github.com/jaredhanson/passport). This module lets you authenticate requests containing client credentials in a JWT sent in the request body's assertion field, as [defined](http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer-01#section-2.1) by the JSON Web Token (JWT) Bearer Token Profiles for OAuth 2.0 draft. These credentials are typically used to protect the token endpoint and used as an alternative to HTTP Basic authentication. This module is modeled off of Google's OAuth 2.0 [Server to Server Applications](https://developers.google.com/accounts/docs/OAuth2ServiceAccount). This module can be used with the [oauth2orize-jwt-bearer](https://github.com/xtuple/oauth2orize-jwt-bearer) module to create a JWT OAuth 2.0 exchange scenario server. ## Install $ npm install passport-oauth2-jwt-bearer ## Usage #### Configure Strategy The JSON Web Token (JWT) Bearer Token Profiles for OAuth 2.0 client authentication strategy authenticates clients using a JWT. The strategy requires a `verify` callback, which accepts those credentials and calls `done` providing a client. var ClientJWTBearerStrategy = require('passport-oauth2-jwt-bearer').Strategy; passport.use(new ClientJWTBearerStrategy( function(claimSetIss, done) { Clients.findOne({ clientId: claimSetIss }, function (err, client) { if (err) { return done(err); } if (!client) { return done(null, false); } return done(null, client); }); } )); #### Authenticate Requests Use `passport.authenticate()`, specifying the `'oauth2-jwt-bearer'` strategy, to authenticate requests. For example, as route middleware in an [Express](http://expressjs.com/) application, using [OAuth2orize](https://github.com/jaredhanson/oauth2orize) middleware to implement the token endpoint: app.get('/profile', passport.authenticate(['oauth2-jwt-bearer'], { session: false }), oauth2orize.token()); ## Tests $ npm install --dev $ make test ## Credits - [bendiy](http://github.com/bendiy) ## License [The MIT License](http://opensource.org/licenses/MIT) Copyright (c) 2012-2013 xTuple <[http://www.xtuple.com/](http://www.xtuple.com/)>