JSPM

passport-atlassian-oauth2

2.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23255
  • Score
    100M100P100Q159917F
  • License MIT

Passport strategy for authenticating with Atlassian (Jira) using OAuth 2 (3LO)

Package Exports

  • passport-atlassian-oauth2

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (passport-atlassian-oauth2) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

passport-atlassian-oauth2

Build Status Greenkeeper badge

Passport strategy for authenticating with Atlassian services using OAuth 2 3LO (three-legged OAuth).

NOTE: Currently, only Jira supports Atlassian Oauth 2 authorization code grants (3LO).

Install

$ npm install passport-atlassian-oauth2

Usage

Create Application

Before using passport-atlassian-oauth2 you must register an application within App Management. If you don't have one follow "Enabling OAuth 2.0 authorization code grants" instructions from Jira documentation page.

⚠️Important: "User identity API" should be enabled in App Management for this strategy to work if you're interested in getting profile information such as name, url, etc. Otherwise, pass skipUserProfile: true in strategy constructor options.

Configure Strategy

The client ID and secret obtained when creating an application are supplied as options when creating the strategy.

const AtlassianStrategy = require('passport-atlassian-oauth2');

passport.use(new AtlassianStrategy({
    clientID: '<ATLASSIAN_CLIENT_ID>',
    clientSecret: '<ATLASSIAN_CLIENT_SECRET>',
    callbackURL: 'http://localhost:8080/auth/atlassian/callback',
    scope: 'offline_access read:jira-user',
  },
  (accessToken, refreshToken, profile, cb) => {
    // optionally save profile data to db
    done(null, profile);
  }
));

See complete Express.js example here.

Sample Profile

{
  "id": "552048:ccc138d6-d39f-1337-93ca-888ff2s05d9e",
  "displayName": "Yevhenii Baraniuk",
  "email": "yevhenii@example.com",
  "photo": "https://avatar-cdn.atlassian.com/21kfjvu62hmkvo3ikdlqo48755?by=hash",
  "provider": "atlassian",
  "accessibleResources": [
    {
      "id": "3942d640-b74e-11e8-96f8-529269fb1459",
      "name": "awesome-jira",
      "url": "https://awesome-jira.atlassian.net",
      "scopes": ["read:jira-user"],
      "avatarUrl": "https://site-admin-avatar-cdn.prod.public.atl-paas.net/avatars/240/trophy.png"
    },
    {
      "id": "eff705b1-5cd8-40d1-ac46-9a9516cbc527",
      "name": "super-product",
      "url": "https://super-product.atlassian.net",
      "scopes": ["read:jira-user"],
      "avatarUrl": "https://site-admin-avatar-cdn.prod.public.atl-paas.net/avatars/240/cup.png"
    }
  ]
}

License

The MIT License

Copyright (c) 2019 Yevhenii Baraniuk