passport-bitbucket-token v1.0.0
passport-bitbucket-token
Passport strategy for authenticating with Bitbucket access tokens using the OAuth 2.0 API.
Library is inspired by passport-facebook-token.
Installation
npm install passport-bitbucket-token
Usage
Configure Strategy
The Bitbucket authentication strategy authenticate users using Bitbucket account and OAuthe 2 tokens. The strategy requires two parameters: options and verify callback.
options are used to configure strategy. verify callback is function that accepts 4 arguments: accessToken, refreshToken, profile, done. profile is parsed Bitbucket profile. done is method which is called with user when verify method is finished.
var BitbucketTokenStrategy = require('passport-bitbucket-token');
passport.use(new BitbucketTokenStrategy({
clientID: 'app-id',
clientSecret: 'client-secret'
},
function (accessToken, refreshToken, profile, done) {
User.upsertUser(accessToken, refreshToken, profile, function(err, user) {
return done(err, user);
});
}));Options
apiVersion- Which version of Bitbucket API user want to use. Allowed values are 1.0 or 2.0.accessTokenField- Name of HTTP header, body field or query parameter where access token is stored in requestrefreshTokenField- Name of HTTP header, body field or query parameter where refresh token is stored in requestpassReqToCallback- Shouldverifyfunction received as first parameterreqobjectprofileWithEmail- Iftruelibrary will try to load profile with all emails that are associated with profile.emailis scope that is required. If nothing is selected emails will not be loaded.
Authenticate User
router.route('/auth/bitbucket')
.post(passport.authenticate('bitbucket-token'), function(req, res, next) {
if (!req.user) {
return res.send(401, 'User Not Authenticated');
}
res.send(200);
});Client Requests
Sending access_token as a Query parameter
GET /auth/bitbucket?access_token=<TOKEN>
Sending access token as an HTTP header
GET /auth/bitbucket HTTP/1.1
Host: example.com
Authorization: Bearer base64_access_token_stringSending access token as an HTTP body
POST /auth/bitbucket HTTP/1.1
Host: example.com
access_token=base64_access_token_stringProfile examples
In this section we will show examples of parsed profile that are returned to verify callback.
Bitbucket API v1.0
{
provider: 'bitbucket',
id: 'john_doe',
username: 'john_doe',
name: { first_name: 'John', last_name: 'Doe' },
emails: [{value: 'test@example.com', primary: true, verified: true}]
avatar: 'https://bitbucket.org/account/john_doe/avatar/32/?ts=1492462087',
_raw: 'raw json object from Bitbucket server',
_json:
{
'parsed json object from server'
}
}Bitbucket API v2.0
{
provider: 'bitbucket',
id: 'john_doe',
username: 'john_doe',
display_name: 'John Doe',
emails: [{value: 'test@example.com', primary: true, verified: true}]
avatar: 'https://bitbucket.org/account/john_doe/avatar/32/?ts=1492462087',
_raw: 'raw json object from Bitbucket server',
_json:
{
'parsed json object from server'
}
}Examples
Example of server application can be found here.
Full example of React.js + Node.js/Express.js can be found here.
License
passport-bitbucket-token is released under MIT License.
