/salesforce-jwt-bearer-token-flow

SalesForce OAuth 2.0 JWT Bearer Token Flow Implementation

Primary LanguageJavaScriptMIT LicenseMIT

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