Skip to content

arthurimirzian/salesforce-jwt-bearer-token-flow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Salesforce OAuth 2.0 JWT Bearer Token Flow Implementation

Salesforce OAuth 2.0 JWT Bearer Token Flow

Installation

$ npm install salesforce-jwt-bearer-token-flow --save

Salesforce Configuration

Step 1 : The certificate

Create the private key and the certificate in osx terminal:

$ openssl req  -nodes -new -x509  -keyout private.pem -out server.cert

Step 2 : The connected App

Create a connected app in Salesforce:

  1. Select Enable OAuth Settings
  2. Select Use digital signatures
  3. Upload the generated certificate

Usage

Input (Callback)

const fs = require('fs'),
  privateKey = fs.readFileSync('private.pem').toString('utf8'),
  jwt = require('salesforce-jwt-bearer-token-flow')
const token = jwt.getToken(
  {
    iss: '<YOUR_CONNECTED_APP_CLIENT_ID>',
    sub: '<YOUR_SALESFORCE_USERNAME>',
    aud: '<YOUR_AUDIENCE>',
    privateKey: privateKey
  },
  function (err, token) {
    console.log(token)
  }
)

Input (Promise)

const   fs = require('fs')
    ,   privateKey = fs.readFileSync('private.pem').toString('utf8')
    ,   jwt = require("salesforce-jwt-bearer-token-flow")
;

async main () {
    const token = await jwt.getToken({
        iss: "<YOUR_CONNECTED_APP_CLIENT_ID>",
        sub: "<YOUR_SALESFORCE_USERNAME>",
        aud: "<YOUR_AUDIENCE>",
        privateKey: privateKey
    });
    console.log(token)
}

The audience (aud) must be:

Output

{
    access_token: 'xxxxxxxxxx!ARYAQNzk4LCbHsX[...]',
    scope: 'id full',
    instance_url: 'https://eu6.salesforce.com',
    id: 'https://login.salesforce.com/id/xxxxxxxxxxEAI/yyyyyyyyyy',
    token_type: 'Bearer'
}

License

MIT