From 528b8aef6bb54a93201e7e0768256a97bb51ed0f Mon Sep 17 00:00:00 2001 From: technical-boy Date: Thu, 2 Jul 2020 09:36:25 -0700 Subject: [PATCH 1/9] Add auth code fallback to silent flow sample --- .../msal-node-silent-flow/index.js | 57 +++++++++++++++++-- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/samples/msal-node-samples/msal-node-silent-flow/index.js b/samples/msal-node-samples/msal-node-silent-flow/index.js index bc0a7ef846..755a56d675 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/index.js +++ b/samples/msal-node-samples/msal-node-silent-flow/index.js @@ -8,6 +8,7 @@ const { promises: fs } = require("fs"); const SERVER_PORT = process.env.PORT || 3000; +// Cache Plugin Configuration const readFromStorage = () => { return fs.readFile("./data/cache.json", "utf-8"); }; @@ -24,6 +25,7 @@ const cachePlugin = { writeToStorage }; +// Public Client Application Configuration const publicClientConfig = { auth: { clientId: "99cab759-2aab-420b-91d8-5e3d8d4f063b", @@ -34,6 +36,15 @@ const publicClientConfig = { cachePlugin }, }; + +// Acquire Token Request Configuration +const scopes = ["user.read"]; + +const authCodeUrlParameters = { + scopes: scopes, + redirectUri: ["http://localhost:3000/redirect"], +}; + const pca = new msal.PublicClientApplication(publicClientConfig); const msalCacheManager = pca.getCacheManager(); let accounts; @@ -41,6 +52,7 @@ let accounts; // Create Express App and Routes const app = express(); + app.get('/', (req, res) => { // get Accounts @@ -50,22 +62,55 @@ app.get('/', (req, res) => { // Build silent request const silentRequest = { account: accounts[1], - redirectUri: "http://localhost:3000/redirect", + scopes: scopes, }; - // get url to sign user in and consent to scopes needed for application + // Acquire Token Silent Request + console.log("Attempting silent token acquisition."); pca.acquireTokenSilent(silentRequest) .then((response) => { - console.log("\nResponse: \n:", response); - res.send(200); + // Successful silent request + console.log("\nSuccessful silent token acquisition:\nResponse: \n:", response); + res.sendStatus(200); return msalCacheManager.writeToPersistence(); }) .catch((error) => { - console.log(error); - res.status(500).send(error); + // No access tokens in cache + if(error.errorCode === "no_tokens_found") { + console.log("No tokens in cache, falling back to auth code."); + // get url to sign user in and consent to scopes needed for application + pca.getAuthCodeUrl(authCodeUrlParameters) + .then((response) => { + console.log(response); + res.redirect(response); + }) + .catch((error) => console.log(JSON.stringify(error))); + } else { + // Other errors + console.log(error); + res.status(500).send(error); + } }); }); +// Second leg of Auth Code grant +app.get('/redirect', (req, res) => { + const tokenRequest = { + code: req.query.code, + redirectUri: "http://localhost:3000/redirect", + scopes: scopes, + }; + + pca.acquireTokenByCode(tokenRequest).then((response) => { + console.log("\nResponse: \n:", response); + res.sendStatus(200); + return msalCacheManager.writeToPersistence(); + }).catch((error) => { + console.log(error); + res.status(500).send(error); + }); +}); + msalCacheManager.readFromPersistence().then(() => { app.listen(SERVER_PORT, () => console.log(`Msal Node Auth Code Sample app listening on port ${SERVER_PORT}!`)); }); From 1788430990937d51c6b8e4f1c5424e632becee7d Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Thu, 2 Jul 2020 10:30:16 -0700 Subject: [PATCH 2/9] Add samples cache files to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4bab3939d8..8cf371fe94 100644 --- a/.gitignore +++ b/.gitignore @@ -266,3 +266,4 @@ lib/msal-core/lib-es6 *.tgz *.zip samples/**/test/screenshots +samples/**/data/cache.json From cf31bf7caebc5a1255074d48e9366420fe34a367 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Thu, 2 Jul 2020 14:39:13 -0700 Subject: [PATCH 3/9] Improve the node silent flow sample with handlebars template for a dynamic UI --- .../data/{cache.json => example.cache.json} | 2 +- .../msal-node-silent-flow/index.js | 113 ++++++++---- .../msal-node-silent-flow/package-lock.json | 174 ++++++++++++++++++ .../msal-node-silent-flow/package.json | 3 +- .../msal-node-silent-flow/views/main.hbs | 60 ++++++ 5 files changed, 310 insertions(+), 42 deletions(-) rename samples/msal-node-samples/msal-node-silent-flow/data/{cache.json => example.cache.json} (99%) create mode 100644 samples/msal-node-samples/msal-node-silent-flow/views/main.hbs diff --git a/samples/msal-node-samples/msal-node-silent-flow/data/cache.json b/samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json similarity index 99% rename from samples/msal-node-samples/msal-node-silent-flow/data/cache.json rename to samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json index c660c20fa1..41aea2382a 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/data/cache.json +++ b/samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json @@ -70,4 +70,4 @@ "client_id": "mock_client_id" } } -} +} \ No newline at end of file diff --git a/samples/msal-node-samples/msal-node-silent-flow/index.js b/samples/msal-node-samples/msal-node-silent-flow/index.js index 755a56d675..215780291a 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/index.js +++ b/samples/msal-node-samples/msal-node-silent-flow/index.js @@ -3,20 +3,25 @@ * Licensed under the MIT License. */ const express = require("express"); +const handlebars = require('express-handlebars'); const msal = require('@azure/msal-node'); const { promises: fs } = require("fs"); const SERVER_PORT = process.env.PORT || 3000; -// Cache Plugin Configuration +/** + * Cache Plugin configuration + */ +const cachePath = "./data/example.cache.json"; // Replace this string with the path to your valid cache file. + const readFromStorage = () => { - return fs.readFile("./data/cache.json", "utf-8"); + return fs.readFile(cachePath, "utf-8"); }; const writeToStorage = (getMergedState) => { return readFromStorage().then(oldFile =>{ const mergedState = getMergedState(oldFile); - return fs.writeFile("./data/cacheAfterWrite.json", mergedState); + return fs.writeFile(cachePath, mergedState); }) }; @@ -25,7 +30,9 @@ const cachePlugin = { writeToStorage }; -// Public Client Application Configuration +/** + * Public Client Application Configuration + */ const publicClientConfig = { auth: { clientId: "99cab759-2aab-420b-91d8-5e3d8d4f063b", @@ -37,7 +44,8 @@ const publicClientConfig = { }, }; -// Acquire Token Request Configuration +/** Request Configuration */ + const scopes = ["user.read"]; const authCodeUrlParameters = { @@ -49,48 +57,39 @@ const pca = new msal.PublicClientApplication(publicClientConfig); const msalCacheManager = pca.getCacheManager(); let accounts; -// Create Express App and Routes +/** + * Express App + */ const app = express(); +// Set handlebars view engine +app.engine( + "hbs", + handlebars({ + layoutsDir: __dirname + "/views", + extname: "hbs", + }) +); +/** + * App Routes + */ app.get('/', (req, res) => { + const data = { + showSignInButton: true + } - // get Accounts - accounts = msalCacheManager.getAllAccounts(); - console.log("Accounts: ", accounts); - - // Build silent request - const silentRequest = { - account: accounts[1], - scopes: scopes, - }; + res.render("main.hbs", data); +}); - // Acquire Token Silent Request - console.log("Attempting silent token acquisition."); - pca.acquireTokenSilent(silentRequest) +// Initiates Auth Code Grant +app.get('/login', (req, res) => { + pca.getAuthCodeUrl(authCodeUrlParameters) .then((response) => { - // Successful silent request - console.log("\nSuccessful silent token acquisition:\nResponse: \n:", response); - res.sendStatus(200); - return msalCacheManager.writeToPersistence(); + console.log(response); + res.redirect(response); }) - .catch((error) => { - // No access tokens in cache - if(error.errorCode === "no_tokens_found") { - console.log("No tokens in cache, falling back to auth code."); - // get url to sign user in and consent to scopes needed for application - pca.getAuthCodeUrl(authCodeUrlParameters) - .then((response) => { - console.log(response); - res.redirect(response); - }) - .catch((error) => console.log(JSON.stringify(error))); - } else { - // Other errors - console.log(error); - res.status(500).send(error); - } - }); + .catch((error) => console.log(JSON.stringify(error))); }); // Second leg of Auth Code grant @@ -103,7 +102,8 @@ app.get('/redirect', (req, res) => { pca.acquireTokenByCode(tokenRequest).then((response) => { console.log("\nResponse: \n:", response); - res.sendStatus(200); + const templateParams = { showLoginButton: false, showATSButton: true, username: response.account.username}; + res.render("main.hbs", templateParams); return msalCacheManager.writeToPersistence(); }).catch((error) => { console.log(error); @@ -111,6 +111,39 @@ app.get('/redirect', (req, res) => { }); }); +// Initiates Acquire Token Silent flow +app.get('/silentFlow', (req, res) => { + // get Accounts + accounts = msalCacheManager.getAllAccounts(); + console.log("Accounts: ", accounts); + + // Build silent request + const silentRequest = { + account: accounts[1], // Index must match the account that is trying to acquire token silently + scopes: scopes, + }; + + let templateParams = { showLoginButton: false, + acquiredToken: null, + couldNotAcquireToken: null, + username: null }; + + pca.acquireTokenSilent(silentRequest) + .then((response) => { + // Successful silent request + templateParams.acquiredToken = true; + templateParams.username = response.account.username; + console.log("\nSuccessful silent token acquisition:\nResponse: \n:", response); + res.render("main.hbs", templateParams) + return msalCacheManager.writeToPersistence(); + }) + .catch((error) => { + console.log(error); + templateParams.couldNotAcquireToken = true; + res.render("main.hbs", templateParams) + }); +}); + msalCacheManager.readFromPersistence().then(() => { app.listen(SERVER_PORT, () => console.log(`Msal Node Auth Code Sample app listening on port ${SERVER_PORT}!`)); }); diff --git a/samples/msal-node-samples/msal-node-silent-flow/package-lock.json b/samples/msal-node-samples/msal-node-silent-flow/package-lock.json index 2948649bf0..64911d80a0 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/package-lock.json +++ b/samples/msal-node-samples/msal-node-silent-flow/package-lock.json @@ -18,6 +18,16 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -35,11 +45,25 @@ "type-is": "~1.6.17" } }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -71,6 +95,14 @@ "ms": "2.0.0" } }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -138,6 +170,18 @@ "vary": "~1.1.2" } }, + "express-handlebars": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-4.0.4.tgz", + "integrity": "sha512-WxbQorVc7V9ORzp9YpG3fLAzrfIrKcScSezuFxTZRFJSx/P2f7QJ9ZyADV8cyPuomyzUxAJnw6t8dnriLfBNvg==", + "requires": { + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "handlebars": "^4.7.6", + "object.assign": "^4.1.0", + "promise": "^8.1.0" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -162,6 +206,51 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -182,6 +271,15 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -225,6 +323,19 @@ "mime-db": "1.44.0" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -235,6 +346,27 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -243,16 +375,37 @@ "ee-first": "1.1.1" } }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -336,6 +489,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -355,6 +513,12 @@ "mime-types": "~2.1.24" } }, + "uglify-js": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz", + "integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==", + "optional": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -369,6 +533,16 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" } } } diff --git a/samples/msal-node-samples/msal-node-silent-flow/package.json b/samples/msal-node-samples/msal-node-silent-flow/package.json index eafb1c7419..962deefc9a 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/package.json +++ b/samples/msal-node-samples/msal-node-silent-flow/package.json @@ -12,6 +12,7 @@ "license": "MIT", "dependencies": { "@azure/msal-node": "^0.1.0", - "express": "^4.17.1" + "express": "^4.17.1", + "express-handlebars": "^4.0.4" } } diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/main.hbs b/samples/msal-node-samples/msal-node-silent-flow/views/main.hbs new file mode 100644 index 0000000000..cfe0a01187 --- /dev/null +++ b/samples/msal-node-samples/msal-node-silent-flow/views/main.hbs @@ -0,0 +1,60 @@ + + + + + + Quickstart | MSAL Node.js Sample + + + + + + + +
+
MSAL Node.js demonstrating Silent Flow
+
+
+
+
+
+ {{#if showSignInButton}} +
Please sign-in to acquire a token silently
+ {{else if acquiredToken}} +
Successfully acquired token for {{username}} using silent flow
+ {{else if couldNotAcquireToken}} +
Could not acquire token. Check console for more information.
+ {{/if}} + {{#if showATSButton }} +
Welcome, {{username}}, you have signed in successfully!
+
+
+ Acquire Token Silent + {{/if}} +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + \ No newline at end of file From 3e2b25e90684a77ff95ed91850a2918b46723600 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 15:25:58 -0700 Subject: [PATCH 4/9] Refactor node silent sample views using handlebars layout and templates and add MS Graph call to silent flow sample --- .../msal-node-silent-flow/graph.js | 32 +++++++++++ .../msal-node-silent-flow/index.js | 56 ++++++++++--------- .../msal-node-silent-flow/package-lock.json | 5 ++ .../msal-node-silent-flow/package.json | 3 +- .../msal-node-silent-flow/views/graph.hbs | 12 ++++ .../views/{ => layouts}/main.hbs | 14 +---- .../msal-node-silent-flow/views/login.hbs | 1 + 7 files changed, 82 insertions(+), 41 deletions(-) create mode 100644 samples/msal-node-samples/msal-node-silent-flow/graph.js create mode 100644 samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs rename samples/msal-node-samples/msal-node-silent-flow/views/{ => layouts}/main.hbs (69%) create mode 100644 samples/msal-node-samples/msal-node-silent-flow/views/login.hbs diff --git a/samples/msal-node-samples/msal-node-silent-flow/graph.js b/samples/msal-node-samples/msal-node-silent-flow/graph.js new file mode 100644 index 0000000000..e7ec4c7170 --- /dev/null +++ b/samples/msal-node-samples/msal-node-silent-flow/graph.js @@ -0,0 +1,32 @@ +const fetch = require('node-fetch'); + +module.exports = { + callMSGraph: function(endpoint, accessToken, callback) { + const headers = new fetch.Headers(); + const bearer = `Bearer ${accessToken}`; + + headers.append("Authorization", bearer); + + const options = { + method: "GET", + headers: headers + }; + + console.log('request made to Graph API at: ' + new Date().toString()); + + fetch(endpoint, options) + .then(response => response.json()) + .then(response => callback(response, endpoint)) + .catch(error => console.log(error)); + }, + + buildGraphProfile: function(graphResponse) { + return { + name: graphResponse.displayName, + title: graphResponse.jobTitle, + mail: graphResponse.mail, + phone: graphResponse.businessPhones[0], + location: graphResponse.officeLocation + } + } +}; \ No newline at end of file diff --git a/samples/msal-node-samples/msal-node-silent-flow/index.js b/samples/msal-node-samples/msal-node-silent-flow/index.js index 215780291a..9c46955c95 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/index.js +++ b/samples/msal-node-samples/msal-node-silent-flow/index.js @@ -3,10 +3,12 @@ * Licensed under the MIT License. */ const express = require("express"); -const handlebars = require('express-handlebars'); +const exphbs = require('express-handlebars'); const msal = require('@azure/msal-node'); const { promises: fs } = require("fs"); +const graph = require('./graph'); + const SERVER_PORT = process.env.PORT || 3000; /** @@ -30,6 +32,11 @@ const cachePlugin = { writeToStorage }; + +const graphConfig = { + graphMeEndpoint: 'https://graph.microsoft.com/v1.0/me' +}; + /** * Public Client Application Configuration */ @@ -63,23 +70,14 @@ let accounts; const app = express(); // Set handlebars view engine -app.engine( - "hbs", - handlebars({ - layoutsDir: __dirname + "/views", - extname: "hbs", - }) -); +app.engine('.hbs', exphbs({extname: '.hbs'})); +app.set('view engine', '.hbs'); /** * App Routes */ app.get('/', (req, res) => { - const data = { - showSignInButton: true - } - - res.render("main.hbs", data); + res.render("login", { showSignInButton: true}); }); // Initiates Auth Code Grant @@ -102,8 +100,8 @@ app.get('/redirect', (req, res) => { pca.acquireTokenByCode(tokenRequest).then((response) => { console.log("\nResponse: \n:", response); - const templateParams = { showLoginButton: false, showATSButton: true, username: response.account.username}; - res.render("main.hbs", templateParams); + const templateParams = { showLoginButton: false, username: response.account.username, profile: false}; + res.render("graph", templateParams); return msalCacheManager.writeToPersistence(); }).catch((error) => { console.log(error); @@ -112,7 +110,7 @@ app.get('/redirect', (req, res) => { }); // Initiates Acquire Token Silent flow -app.get('/silentFlow', (req, res) => { +app.get('/graphCall', (req, res) => { // get Accounts accounts = msalCacheManager.getAllAccounts(); console.log("Accounts: ", accounts); @@ -123,24 +121,28 @@ app.get('/silentFlow', (req, res) => { scopes: scopes, }; - let templateParams = { showLoginButton: false, - acquiredToken: null, - couldNotAcquireToken: null, - username: null }; - + let templateParams = { showLoginButton: false }; + // Acquire Token Silently to be used in MS Graph call pca.acquireTokenSilent(silentRequest) .then((response) => { - // Successful silent request - templateParams.acquiredToken = true; - templateParams.username = response.account.username; console.log("\nSuccessful silent token acquisition:\nResponse: \n:", response); - res.render("main.hbs", templateParams) - return msalCacheManager.writeToPersistence(); + const username = response.account.username; + // Call graph after successfully acquiring token + graph.callMSGraph(graphConfig.graphMeEndpoint, response.accessToken, (response, endpoint) => { + // Successful silent request + templateParams = { + ...templateParams, + username, + profile: graph.buildGraphProfile(response) + }; + res.render("graph", templateParams) + return msalCacheManager.writeToPersistence(); + }); }) .catch((error) => { console.log(error); templateParams.couldNotAcquireToken = true; - res.render("main.hbs", templateParams) + res.render("graph", templateParams) }); }); diff --git a/samples/msal-node-samples/msal-node-silent-flow/package-lock.json b/samples/msal-node-samples/msal-node-silent-flow/package-lock.json index 64911d80a0..a0f01bdc03 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/package-lock.json +++ b/samples/msal-node-samples/msal-node-silent-flow/package-lock.json @@ -351,6 +351,11 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", diff --git a/samples/msal-node-samples/msal-node-silent-flow/package.json b/samples/msal-node-samples/msal-node-silent-flow/package.json index 962deefc9a..088a86dd46 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/package.json +++ b/samples/msal-node-samples/msal-node-silent-flow/package.json @@ -13,6 +13,7 @@ "dependencies": { "@azure/msal-node": "^0.1.0", "express": "^4.17.1", - "express-handlebars": "^4.0.4" + "express-handlebars": "^4.0.4", + "node-fetch": "^2.6.0" } } diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs b/samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs new file mode 100644 index 0000000000..dd66b308e6 --- /dev/null +++ b/samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs @@ -0,0 +1,12 @@ +
Welcome, {{username}}, you have signed in successfully!
+
+
+{{#if profile}} +

Name: {{profile.name}}

+

Title: {{profile.title}}

+

Mail: {{profile.mail}}

+

Phone: {{profile.phone}}

+

Location: {{profile.location}}

+{{else}} + See Profile +{{/if}} \ No newline at end of file diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/main.hbs b/samples/msal-node-samples/msal-node-silent-flow/views/layouts/main.hbs similarity index 69% rename from samples/msal-node-samples/msal-node-silent-flow/views/main.hbs rename to samples/msal-node-samples/msal-node-silent-flow/views/layouts/main.hbs index cfe0a01187..9335896c12 100644 --- a/samples/msal-node-samples/msal-node-silent-flow/views/main.hbs +++ b/samples/msal-node-samples/msal-node-silent-flow/views/layouts/main.hbs @@ -27,19 +27,7 @@
- {{#if showSignInButton}} -
Please sign-in to acquire a token silently
- {{else if acquiredToken}} -
Successfully acquired token for {{username}} using silent flow
- {{else if couldNotAcquireToken}} -
Could not acquire token. Check console for more information.
- {{/if}} - {{#if showATSButton }} -
Welcome, {{username}}, you have signed in successfully!
-
-
- Acquire Token Silent - {{/if}} + {{{body}}}
diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/login.hbs b/samples/msal-node-samples/msal-node-silent-flow/views/login.hbs new file mode 100644 index 0000000000..5152eca2f8 --- /dev/null +++ b/samples/msal-node-samples/msal-node-silent-flow/views/login.hbs @@ -0,0 +1 @@ +
Please sign-in to acquire a token silently
\ No newline at end of file From 53325e25d8ab92fe05867098f79626412b0e1c11 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 16:49:18 -0700 Subject: [PATCH 5/9] Update msal-node-samples inner directory names --- .../index.js | 0 .../package-lock.json | 0 .../package.json | 0 .../NodeCache.txt | 0 .../index.js | 0 .../package-lock.json | 0 .../package.json | 0 .../msal-node-auth-code/data/cache.json | 73 ------------------- .../data/example.cache.json | 73 ------------------- .../NodeCache.txt | 0 .../index.js | 0 .../package-lock.json | 0 .../package.json | 0 .../silent-flow/data/example.cache.json | 1 + .../graph.js | 0 .../index.js | 0 .../package-lock.json | 0 .../package.json | 0 .../views/graph.hbs | 0 .../views/layouts/main.hbs | 0 .../views/login.hbs | 0 21 files changed, 1 insertion(+), 146 deletions(-) rename samples/msal-node-samples/{msal-node-auth-code => auth-code}/index.js (100%) rename samples/msal-node-samples/{msal-node-auth-code => auth-code}/package-lock.json (100%) rename samples/msal-node-samples/{msal-node-auth-code => auth-code}/package.json (100%) rename samples/msal-node-samples/{msal-node-device-code => device-code}/NodeCache.txt (100%) rename samples/msal-node-samples/{msal-node-device-code => device-code}/index.js (100%) rename samples/msal-node-samples/{msal-node-device-code => device-code}/package-lock.json (100%) rename samples/msal-node-samples/{msal-node-device-code => device-code}/package.json (100%) delete mode 100644 samples/msal-node-samples/msal-node-auth-code/data/cache.json delete mode 100644 samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json rename samples/msal-node-samples/{msal-node-refresh-token => refresh-token}/NodeCache.txt (100%) rename samples/msal-node-samples/{msal-node-refresh-token => refresh-token}/index.js (100%) rename samples/msal-node-samples/{msal-node-refresh-token => refresh-token}/package-lock.json (100%) rename samples/msal-node-samples/{msal-node-refresh-token => refresh-token}/package.json (100%) create mode 100644 samples/msal-node-samples/silent-flow/data/example.cache.json rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/graph.js (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/index.js (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/package-lock.json (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/package.json (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/views/graph.hbs (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/views/layouts/main.hbs (100%) rename samples/msal-node-samples/{msal-node-silent-flow => silent-flow}/views/login.hbs (100%) diff --git a/samples/msal-node-samples/msal-node-auth-code/index.js b/samples/msal-node-samples/auth-code/index.js similarity index 100% rename from samples/msal-node-samples/msal-node-auth-code/index.js rename to samples/msal-node-samples/auth-code/index.js diff --git a/samples/msal-node-samples/msal-node-auth-code/package-lock.json b/samples/msal-node-samples/auth-code/package-lock.json similarity index 100% rename from samples/msal-node-samples/msal-node-auth-code/package-lock.json rename to samples/msal-node-samples/auth-code/package-lock.json diff --git a/samples/msal-node-samples/msal-node-auth-code/package.json b/samples/msal-node-samples/auth-code/package.json similarity index 100% rename from samples/msal-node-samples/msal-node-auth-code/package.json rename to samples/msal-node-samples/auth-code/package.json diff --git a/samples/msal-node-samples/msal-node-device-code/NodeCache.txt b/samples/msal-node-samples/device-code/NodeCache.txt similarity index 100% rename from samples/msal-node-samples/msal-node-device-code/NodeCache.txt rename to samples/msal-node-samples/device-code/NodeCache.txt diff --git a/samples/msal-node-samples/msal-node-device-code/index.js b/samples/msal-node-samples/device-code/index.js similarity index 100% rename from samples/msal-node-samples/msal-node-device-code/index.js rename to samples/msal-node-samples/device-code/index.js diff --git a/samples/msal-node-samples/msal-node-device-code/package-lock.json b/samples/msal-node-samples/device-code/package-lock.json similarity index 100% rename from samples/msal-node-samples/msal-node-device-code/package-lock.json rename to samples/msal-node-samples/device-code/package-lock.json diff --git a/samples/msal-node-samples/msal-node-device-code/package.json b/samples/msal-node-samples/device-code/package.json similarity index 100% rename from samples/msal-node-samples/msal-node-device-code/package.json rename to samples/msal-node-samples/device-code/package.json diff --git a/samples/msal-node-samples/msal-node-auth-code/data/cache.json b/samples/msal-node-samples/msal-node-auth-code/data/cache.json deleted file mode 100644 index d3fdd20f5b..0000000000 --- a/samples/msal-node-samples/msal-node-auth-code/data/cache.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "Account": { - "uid.utid-login.microsoftonline.com-microsoft": { - "username": "John Doe", - "local_account_id": "object1234", - "realm": "microsoft", - "environment": "login.microsoftonline.com", - "home_account_id": "uid.utid", - "authority_type": "MSSTS", - "client_info": "base64encodedjson" - } - }, - "RefreshToken": { - "uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--": { - "environment": "login.microsoftonline.com", - "credential_type": "RefreshToken", - "secret": "a refresh token", - "client_id": "mock_client_id", - "home_account_id": "uid.utid" - }, - "uid.utid-login.microsoftonline.com-refreshtoken-1--": { - "environment": "login.microsoftonline.com", - "credential_type": "RefreshToken", - "secret": "a refresh token", - "client_id": "mock_client_id", - "home_account_id": "uid.utid", - "familyId": "1" - } - }, - "AccessToken": { - "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3": { - "environment": "login.microsoftonline.com", - "credential_type": "AccessToken", - "secret": "an access token", - "realm": "microsoft", - "target": "scope1 scope2 scope3", - "client_id": "mock_client_id", - "cached_at": "1000", - "home_account_id": "uid.utid", - "extended_expires_on": "4600", - "expires_on": "4600" - }, - "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5": { - "environment": "login.microsoftonline.com", - "credential_type": "AccessToken", - "secret": "an access token", - "realm": "microsoft", - "target": "scope4 scope5", - "client_id": "mock_client_id", - "cached_at": "1000", - "home_account_id": "uid.utid", - "extended_expires_on": "4600", - "expires_on": "4600" - } - }, - "IdToken": { - "uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-": { - "realm": "microsoft", - "environment": "login.microsoftonline.com", - "credential_type": "IdToken", - "secret": "header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature", - "client_id": "mock_client_id", - "home_account_id": "uid.utid" - } - }, - "AppMetadata": { - "appmetadata-login.microsoftonline.com-mock_client_id": { - "environment": "login.microsoftonline.com", - "family_id": "1", - "client_id": "mock_client_id" - } - } -} diff --git a/samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json b/samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json deleted file mode 100644 index 41aea2382a..0000000000 --- a/samples/msal-node-samples/msal-node-silent-flow/data/example.cache.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "Account": { - "uid.utid-login.microsoftonline.com-microsoft": { - "username": "John Doe", - "local_account_id": "object1234", - "realm": "microsoft", - "environment": "login.microsoftonline.com", - "home_account_id": "uid.utid", - "authority_type": "MSSTS", - "client_info": "base64encodedjson" - } - }, - "AccessToken": { - "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3": { - "environment": "login.microsoftonline.com", - "credential_type": "AccessToken", - "secret": "an access token", - "realm": "microsoft", - "target": "scope1 scope2 scope3", - "client_id": "mock_client_id", - "cached_at": "1000", - "home_account_id": "uid.utid", - "extended_expires_on": "4600", - "expires_on": "4600" - }, - "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5": { - "environment": "login.microsoftonline.com", - "credential_type": "AccessToken", - "secret": "an access token", - "realm": "microsoft", - "target": "scope4 scope5", - "client_id": "mock_client_id", - "cached_at": "1000", - "home_account_id": "uid.utid", - "extended_expires_on": "4600", - "expires_on": "4600" - } - }, - "RefreshToken": { - "uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--": { - "environment": "login.microsoftonline.com", - "credential_type": "RefreshToken", - "secret": "a refresh token", - "client_id": "mock_client_id", - "home_account_id": "uid.utid" - }, - "uid.utid-login.microsoftonline.com-refreshtoken-1--": { - "environment": "login.microsoftonline.com", - "credential_type": "RefreshToken", - "secret": "a refresh token", - "client_id": "mock_client_id", - "home_account_id": "uid.utid", - "familyId": "1" - } - }, - "IdToken": { - "uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-": { - "realm": "microsoft", - "environment": "login.microsoftonline.com", - "credential_type": "IdToken", - "secret": "header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature", - "client_id": "mock_client_id", - "home_account_id": "uid.utid" - } - }, - "AppMetadata": { - "appmetadata-login.microsoftonline.com-mock_client_id": { - "environment": "login.microsoftonline.com", - "family_id": "1", - "client_id": "mock_client_id" - } - } -} \ No newline at end of file diff --git a/samples/msal-node-samples/msal-node-refresh-token/NodeCache.txt b/samples/msal-node-samples/refresh-token/NodeCache.txt similarity index 100% rename from samples/msal-node-samples/msal-node-refresh-token/NodeCache.txt rename to samples/msal-node-samples/refresh-token/NodeCache.txt diff --git a/samples/msal-node-samples/msal-node-refresh-token/index.js b/samples/msal-node-samples/refresh-token/index.js similarity index 100% rename from samples/msal-node-samples/msal-node-refresh-token/index.js rename to samples/msal-node-samples/refresh-token/index.js diff --git a/samples/msal-node-samples/msal-node-refresh-token/package-lock.json b/samples/msal-node-samples/refresh-token/package-lock.json similarity index 100% rename from samples/msal-node-samples/msal-node-refresh-token/package-lock.json rename to samples/msal-node-samples/refresh-token/package-lock.json diff --git a/samples/msal-node-samples/msal-node-refresh-token/package.json b/samples/msal-node-samples/refresh-token/package.json similarity index 100% rename from samples/msal-node-samples/msal-node-refresh-token/package.json rename to samples/msal-node-samples/refresh-token/package.json diff --git a/samples/msal-node-samples/silent-flow/data/example.cache.json b/samples/msal-node-samples/silent-flow/data/example.cache.json new file mode 100644 index 0000000000..77a9414284 --- /dev/null +++ b/samples/msal-node-samples/silent-flow/data/example.cache.json @@ -0,0 +1 @@ +{"Account":{"uid.utid-login.microsoftonline.com-microsoft":{"username":"John Doe","local_account_id":"object1234","realm":"microsoft","environment":"login.microsoftonline.com","home_account_id":"uid.utid","authority_type":"MSSTS","client_info":"base64encodedjson"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-90b8faa8-cc95-460e-a618-ee770bee1759":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","local_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd","username":"user@sgonz.onmicrosoft.com","authority_type":"MSSTS","name":"Test User","client_info":"eyJ1aWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJ1dGlkIjoiOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5In0"}},"AccessToken":{"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope1 scope2 scope3","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope4 scope5","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-accesstoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-openid profile user.read email":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"AccessToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJub25jZSI6ImF3VUJCbFVnd29PWHI0QjgxODN0aThYYlJ6NWJDbFhPX1pGelZ2QWNXck0iLCJhbGciOiJSUzI1NiIsIng1dCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC85MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkvIiwiaWF0IjoxNTk0MDc4ODg3LCJuYmYiOjE1OTQwNzg4ODcsImV4cCI6MTU5NDA4Mjc4NywiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkUyQmdZTkRKeU5HZUUzdGg0WW5qTmcyMTEyZmUzQi9EbzlBcjRQdkM3OXk3cENiakgyOEEiLCJhbXIiOlsicHdkIl0sImFwcF9kaXNwbGF5bmFtZSI6Ik5vZGVBdXRoQ29kZSIsImFwcGlkIjoiOTljYWI3NTktMmFhYi00MjBiLTkxZDgtNWUzZDhkNGYwNjNiIiwiYXBwaWRhY3IiOiIwIiwiaXBhZGRyIjoiNzEuMjMxLjEzNi41NCIsIm5hbWUiOiJUZXN0IFVzZXIiLCJvaWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDA5Mzk5MEY2RiIsInB3ZF9leHAiOiI2NDE1NSIsInB3ZF91cmwiOiJodHRwczovL3BvcnRhbC5taWNyb3NvZnRvbmxpbmUuY29tL0NoYW5nZVBhc3N3b3JkLmFzcHgiLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInNjcCI6Im9wZW5pZCBwcm9maWxlIFVzZXIuUmVhZCBlbWFpbCIsInN1YiI6IkV3dTlBOXJuYlJNVzlZRWhfdnZHeC1KSHdreVhIcjlYekZTR3M2STVkMzAiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1bmlxdWVfbmFtZSI6InVzZXJAc2dvbnoub25taWNyb3NvZnQuY29tIiwidXBuIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJDWTl4d1hHMklVcXpaM2kwenZsakFBIiwidmVyIjoiMS4wIiwieG1zX3N0Ijp7InN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kifSwieG1zX3RjZHQiOjE1NDU1MjA3Njh9.NgbhKKab67EsxQCVwmbE9CGDoB-d1Pk2MAene5hHwSJhugfNHMIjjcMZVoQwx2Cljd2lPGwHLylgMtIL3RHC6A7TN4gXXmucKltoUQ53bWhQIPcmDbdT8vdc14ewZyFCON8QYAK9rC9jEcwjZYbjGa2kHPXjh97gdlFJe9KkFiAe2b-p0bDXd284rNG1a-1EjFLkcx5lz7G5g28_mQd9OfhB3l6ybhYzd0vX7q_q1OdJQruzUrYGpbLeu9AYJm4lPpYCvIj2P4bkzRud9rlDDJ_f_VQ76daY8vf8LsscTInG0_aenYtjUdwNi97hO_JlZzt-wXNkF6Z-_YhTtTz6_A","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","target":"openid profile user.read email","cached_at":"1594079183","expires_on":"1594082782","extended_expires_on":"1594086381"}},"RefreshToken":{"uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid"},"uid.utid-login.microsoftonline.com-refreshtoken-1--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid","familyId":"1"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-refreshtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b--":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"RefreshToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"0.ASgAqPq4kJXMDkamGO53C-4XWVm3ypmrKgtCkdhePY1PBjsoACg.AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAqoALL8cdNGpAKcupLrwOEi-nirEhYiLyFu34LPzJudsGjpfGKqWg-ScocjZJD-aapl6KOGP5I0t2r8FwSLlxAvM6Y8dNWbpce-EC6T9c5XJSMmXOmmirPG2MNtgA-LiU5kbq_yz1qC9lsM5KZ0X31RduOe1S1KpjTVYAJRoq2eoI7kA3Ass62xTROmu-9dZ0yMvMX5guwCYGDbgIHeXfHIOIHu9MtmimLZlSeQxrSg_Q5RNfUbpvY_Xn0q8qyaRFf2D1LjFbEeWDaDnVaoJ8EhgA-VPSgoLxPI8jv0eSg1AYC57WPh9Zx3kT5JcFwHXpnaO19QAFE2JvzBO_IyAJ9sUhdbL6jvCYTbOjltJualhZsxIKcoh3OovzMzjHqkd8I4iudfotliuMXyLUD7k0NqTAoGgODOngznGJtfya10TTFasW2KlTVfOAb1EvwqYuRVoZKMzFHeX_5DgNabMIAEalbGesDUoL7uv2nR4XCgJo6ULAAMNsl_rlovS1l-hREZ_SXdAVBA1dhwoCCzmrgjQzLnjz_cDsSo6P0tRiiI2beLhdx_HC1efN_3A4LDkTDCdsaMTf2dLcuD2lL8yA-sxDGd5gcEbqZv0xuWvSlA62eSA4zBd4GyIwC0RkD40UBW1S8-vdvKvzqyTls6as1iLoUuHpq3jZb6AnS4kbIabazwW3EmgmGBt_Od5RYLU3Xl4EF-hg9hYbtTQboDvW7L4tqK6XD8VYGO8RbtlXPJ5ZtrP3C1py298MEplN8RuJ1pEvaxus-LDzsjAIHPE2AwdGEAfc1VbahwamdnTG7UW0-s0ROH--DTKgxyxwLjmIc5tXM6RrNH5cLVVQ0zVUZq2uY5L962u494wPnUANHSogAA"}},"IdToken":{"uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-":{"realm":"microsoft","environment":"login.microsoftonline.com","credential_type":"IdToken","secret":"header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature","client_id":"mock_client_id","home_account_id":"uid.utid"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-idtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"IdToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiI5OWNhYjc1OS0yYWFiLTQyMGItOTFkOC01ZTNkOGQ0ZjA2M2IiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5L3YyLjAiLCJpYXQiOjE1OTQwNzg4ODcsIm5iZiI6MTU5NDA3ODg4NywiZXhwIjoxNTk0MDgyNzg3LCJuYW1lIjoiVGVzdCBVc2VyIiwib2lkIjoiZmIzNjgwZWMtN2I5OC00ZTFjLTg0MzQtNWJlMTZjNWU3OGZkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1dGkiOiJDWTl4d1hHMklVcXpaM2kwenZsakFBIiwidmVyIjoiMi4wIn0.aFLWerONCmrDXq0SGcr3PiGAz99b4LJD5k9ICKMgjwEDDp_5JcAeLOInuAOWVbQhTOWPRkXeVtlCSWksKmMfFasS162xSrPL8MsdEBe9-SnwM6WQQaOa2R_XADM0pdbHiFe8mVVpsKCTtrK1NsAl1rYBkWdenhHqhZ5ptGS-vDU8LbcsBLWKN7Wiges2cmpOzaPKyOyfxNSgvv0QO-oIhRiElGfunUhC0xMM-CtgBShU-nXp0a1dP0gfUG-Lr8fVeMbdx1-9fWVzPapUKZV5EUbVXSb7FC3ZLPoXZcJb2qkH1gnpKhXgTpHkIZ6SrejCEV-fzAFVOG8bb-yTx3E5kA","realm":"90b8faa8-cc95-460e-a618-ee770bee1759"}},"AppMetadata":{"appmetadata-login.microsoftonline.com-mock_client_id":{"environment":"login.microsoftonline.com","family_id":"1","client_id":"mock_client_id"}}} \ No newline at end of file diff --git a/samples/msal-node-samples/msal-node-silent-flow/graph.js b/samples/msal-node-samples/silent-flow/graph.js similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/graph.js rename to samples/msal-node-samples/silent-flow/graph.js diff --git a/samples/msal-node-samples/msal-node-silent-flow/index.js b/samples/msal-node-samples/silent-flow/index.js similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/index.js rename to samples/msal-node-samples/silent-flow/index.js diff --git a/samples/msal-node-samples/msal-node-silent-flow/package-lock.json b/samples/msal-node-samples/silent-flow/package-lock.json similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/package-lock.json rename to samples/msal-node-samples/silent-flow/package-lock.json diff --git a/samples/msal-node-samples/msal-node-silent-flow/package.json b/samples/msal-node-samples/silent-flow/package.json similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/package.json rename to samples/msal-node-samples/silent-flow/package.json diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs b/samples/msal-node-samples/silent-flow/views/graph.hbs similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/views/graph.hbs rename to samples/msal-node-samples/silent-flow/views/graph.hbs diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/layouts/main.hbs b/samples/msal-node-samples/silent-flow/views/layouts/main.hbs similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/views/layouts/main.hbs rename to samples/msal-node-samples/silent-flow/views/layouts/main.hbs diff --git a/samples/msal-node-samples/msal-node-silent-flow/views/login.hbs b/samples/msal-node-samples/silent-flow/views/login.hbs similarity index 100% rename from samples/msal-node-samples/msal-node-silent-flow/views/login.hbs rename to samples/msal-node-samples/silent-flow/views/login.hbs From 2d76d642678d28063470557b36af99edea84d536 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 16:59:37 -0700 Subject: [PATCH 6/9] Replace node fetch with axios --- .../silent-flow/data/example.cache.json | 2 +- .../msal-node-samples/silent-flow/graph.js | 17 ++++------ .../silent-flow/package-lock.json | 31 ++++++++++++++++--- .../silent-flow/package.json | 4 +-- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/samples/msal-node-samples/silent-flow/data/example.cache.json b/samples/msal-node-samples/silent-flow/data/example.cache.json index 77a9414284..f325578f38 100644 --- a/samples/msal-node-samples/silent-flow/data/example.cache.json +++ b/samples/msal-node-samples/silent-flow/data/example.cache.json @@ -1 +1 @@ -{"Account":{"uid.utid-login.microsoftonline.com-microsoft":{"username":"John Doe","local_account_id":"object1234","realm":"microsoft","environment":"login.microsoftonline.com","home_account_id":"uid.utid","authority_type":"MSSTS","client_info":"base64encodedjson"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-90b8faa8-cc95-460e-a618-ee770bee1759":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","local_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd","username":"user@sgonz.onmicrosoft.com","authority_type":"MSSTS","name":"Test User","client_info":"eyJ1aWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJ1dGlkIjoiOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5In0"}},"AccessToken":{"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope1 scope2 scope3","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope4 scope5","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-accesstoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-openid profile user.read email":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"AccessToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJub25jZSI6ImF3VUJCbFVnd29PWHI0QjgxODN0aThYYlJ6NWJDbFhPX1pGelZ2QWNXck0iLCJhbGciOiJSUzI1NiIsIng1dCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC85MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkvIiwiaWF0IjoxNTk0MDc4ODg3LCJuYmYiOjE1OTQwNzg4ODcsImV4cCI6MTU5NDA4Mjc4NywiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkUyQmdZTkRKeU5HZUUzdGg0WW5qTmcyMTEyZmUzQi9EbzlBcjRQdkM3OXk3cENiakgyOEEiLCJhbXIiOlsicHdkIl0sImFwcF9kaXNwbGF5bmFtZSI6Ik5vZGVBdXRoQ29kZSIsImFwcGlkIjoiOTljYWI3NTktMmFhYi00MjBiLTkxZDgtNWUzZDhkNGYwNjNiIiwiYXBwaWRhY3IiOiIwIiwiaXBhZGRyIjoiNzEuMjMxLjEzNi41NCIsIm5hbWUiOiJUZXN0IFVzZXIiLCJvaWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDA5Mzk5MEY2RiIsInB3ZF9leHAiOiI2NDE1NSIsInB3ZF91cmwiOiJodHRwczovL3BvcnRhbC5taWNyb3NvZnRvbmxpbmUuY29tL0NoYW5nZVBhc3N3b3JkLmFzcHgiLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInNjcCI6Im9wZW5pZCBwcm9maWxlIFVzZXIuUmVhZCBlbWFpbCIsInN1YiI6IkV3dTlBOXJuYlJNVzlZRWhfdnZHeC1KSHdreVhIcjlYekZTR3M2STVkMzAiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1bmlxdWVfbmFtZSI6InVzZXJAc2dvbnoub25taWNyb3NvZnQuY29tIiwidXBuIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJDWTl4d1hHMklVcXpaM2kwenZsakFBIiwidmVyIjoiMS4wIiwieG1zX3N0Ijp7InN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kifSwieG1zX3RjZHQiOjE1NDU1MjA3Njh9.NgbhKKab67EsxQCVwmbE9CGDoB-d1Pk2MAene5hHwSJhugfNHMIjjcMZVoQwx2Cljd2lPGwHLylgMtIL3RHC6A7TN4gXXmucKltoUQ53bWhQIPcmDbdT8vdc14ewZyFCON8QYAK9rC9jEcwjZYbjGa2kHPXjh97gdlFJe9KkFiAe2b-p0bDXd284rNG1a-1EjFLkcx5lz7G5g28_mQd9OfhB3l6ybhYzd0vX7q_q1OdJQruzUrYGpbLeu9AYJm4lPpYCvIj2P4bkzRud9rlDDJ_f_VQ76daY8vf8LsscTInG0_aenYtjUdwNi97hO_JlZzt-wXNkF6Z-_YhTtTz6_A","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","target":"openid profile user.read email","cached_at":"1594079183","expires_on":"1594082782","extended_expires_on":"1594086381"}},"RefreshToken":{"uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid"},"uid.utid-login.microsoftonline.com-refreshtoken-1--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid","familyId":"1"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-refreshtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b--":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"RefreshToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"0.ASgAqPq4kJXMDkamGO53C-4XWVm3ypmrKgtCkdhePY1PBjsoACg.AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAqoALL8cdNGpAKcupLrwOEi-nirEhYiLyFu34LPzJudsGjpfGKqWg-ScocjZJD-aapl6KOGP5I0t2r8FwSLlxAvM6Y8dNWbpce-EC6T9c5XJSMmXOmmirPG2MNtgA-LiU5kbq_yz1qC9lsM5KZ0X31RduOe1S1KpjTVYAJRoq2eoI7kA3Ass62xTROmu-9dZ0yMvMX5guwCYGDbgIHeXfHIOIHu9MtmimLZlSeQxrSg_Q5RNfUbpvY_Xn0q8qyaRFf2D1LjFbEeWDaDnVaoJ8EhgA-VPSgoLxPI8jv0eSg1AYC57WPh9Zx3kT5JcFwHXpnaO19QAFE2JvzBO_IyAJ9sUhdbL6jvCYTbOjltJualhZsxIKcoh3OovzMzjHqkd8I4iudfotliuMXyLUD7k0NqTAoGgODOngznGJtfya10TTFasW2KlTVfOAb1EvwqYuRVoZKMzFHeX_5DgNabMIAEalbGesDUoL7uv2nR4XCgJo6ULAAMNsl_rlovS1l-hREZ_SXdAVBA1dhwoCCzmrgjQzLnjz_cDsSo6P0tRiiI2beLhdx_HC1efN_3A4LDkTDCdsaMTf2dLcuD2lL8yA-sxDGd5gcEbqZv0xuWvSlA62eSA4zBd4GyIwC0RkD40UBW1S8-vdvKvzqyTls6as1iLoUuHpq3jZb6AnS4kbIabazwW3EmgmGBt_Od5RYLU3Xl4EF-hg9hYbtTQboDvW7L4tqK6XD8VYGO8RbtlXPJ5ZtrP3C1py298MEplN8RuJ1pEvaxus-LDzsjAIHPE2AwdGEAfc1VbahwamdnTG7UW0-s0ROH--DTKgxyxwLjmIc5tXM6RrNH5cLVVQ0zVUZq2uY5L962u494wPnUANHSogAA"}},"IdToken":{"uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-":{"realm":"microsoft","environment":"login.microsoftonline.com","credential_type":"IdToken","secret":"header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature","client_id":"mock_client_id","home_account_id":"uid.utid"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-idtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"IdToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiI5OWNhYjc1OS0yYWFiLTQyMGItOTFkOC01ZTNkOGQ0ZjA2M2IiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5L3YyLjAiLCJpYXQiOjE1OTQwNzg4ODcsIm5iZiI6MTU5NDA3ODg4NywiZXhwIjoxNTk0MDgyNzg3LCJuYW1lIjoiVGVzdCBVc2VyIiwib2lkIjoiZmIzNjgwZWMtN2I5OC00ZTFjLTg0MzQtNWJlMTZjNWU3OGZkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1dGkiOiJDWTl4d1hHMklVcXpaM2kwenZsakFBIiwidmVyIjoiMi4wIn0.aFLWerONCmrDXq0SGcr3PiGAz99b4LJD5k9ICKMgjwEDDp_5JcAeLOInuAOWVbQhTOWPRkXeVtlCSWksKmMfFasS162xSrPL8MsdEBe9-SnwM6WQQaOa2R_XADM0pdbHiFe8mVVpsKCTtrK1NsAl1rYBkWdenhHqhZ5ptGS-vDU8LbcsBLWKN7Wiges2cmpOzaPKyOyfxNSgvv0QO-oIhRiElGfunUhC0xMM-CtgBShU-nXp0a1dP0gfUG-Lr8fVeMbdx1-9fWVzPapUKZV5EUbVXSb7FC3ZLPoXZcJb2qkH1gnpKhXgTpHkIZ6SrejCEV-fzAFVOG8bb-yTx3E5kA","realm":"90b8faa8-cc95-460e-a618-ee770bee1759"}},"AppMetadata":{"appmetadata-login.microsoftonline.com-mock_client_id":{"environment":"login.microsoftonline.com","family_id":"1","client_id":"mock_client_id"}}} \ No newline at end of file +{"Account":{"uid.utid-login.microsoftonline.com-microsoft":{"username":"John Doe","local_account_id":"object1234","realm":"microsoft","environment":"login.microsoftonline.com","home_account_id":"uid.utid","authority_type":"MSSTS","client_info":"base64encodedjson"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-90b8faa8-cc95-460e-a618-ee770bee1759":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","local_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd","username":"user@sgonz.onmicrosoft.com","authority_type":"MSSTS","name":"Test User","client_info":"eyJ1aWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJ1dGlkIjoiOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5In0"}},"AccessToken":{"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope1 scope2 scope3","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope4 scope5","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-accesstoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-openid profile user.read email":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"AccessToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IlZpLWtlTlRqZFltWWhDNHB3QnNyTFV0WnZGOVVvY296UHVDQUZqMzcyOHciLCJhbGciOiJSUzI1NiIsIng1dCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC85MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkvIiwiaWF0IjoxNTk0MDc5NjYwLCJuYmYiOjE1OTQwNzk2NjAsImV4cCI6MTU5NDA4MzU2MCwiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkUyQmdZRGpKTi9WY1Fjd0tkejFwNWNtTTdwUFRydDIrZFVZM2pXMm5pY3FzeThLMXpHMEEiLCJhbXIiOlsicHdkIl0sImFwcF9kaXNwbGF5bmFtZSI6Ik5vZGVBdXRoQ29kZSIsImFwcGlkIjoiOTljYWI3NTktMmFhYi00MjBiLTkxZDgtNWUzZDhkNGYwNjNiIiwiYXBwaWRhY3IiOiIwIiwiaXBhZGRyIjoiNzEuMjMxLjEzNi41NCIsIm5hbWUiOiJUZXN0IFVzZXIiLCJvaWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDA5Mzk5MEY2RiIsInB3ZF9leHAiOiI2MzM4MiIsInB3ZF91cmwiOiJodHRwczovL3BvcnRhbC5taWNyb3NvZnRvbmxpbmUuY29tL0NoYW5nZVBhc3N3b3JkLmFzcHgiLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInNjcCI6Im9wZW5pZCBwcm9maWxlIFVzZXIuUmVhZCBlbWFpbCIsInN1YiI6IkV3dTlBOXJuYlJNVzlZRWhfdnZHeC1KSHdreVhIcjlYekZTR3M2STVkMzAiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1bmlxdWVfbmFtZSI6InVzZXJAc2dvbnoub25taWNyb3NvZnQuY29tIiwidXBuIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJWNENnY1ZHaGlVQ2h3WXoyNEtPNUFBIiwidmVyIjoiMS4wIiwieG1zX3N0Ijp7InN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kifSwieG1zX3RjZHQiOjE1NDU1MjA3Njh9.j6g-zI_qUkI4cAD5m6p0qXPdFW268mJ8iBhgDw5avY1zxtG1w_5DLXw2dqOF567U5pf1yyf2pnEmgT8hrfyCsUznDhfhONlaTlN_s2t8RuBIBisHKhzbYgsS_J0sm59QXy23PUrbYhbKKBUjs-biYNyrmqRQy4oJHMY0QFyFNhqCwoJmUKS71zKaaI6j-7IkU6CrqdN5ol4FShAbA7KyhqJDtDbTDv9vflXBWREwUG7p8K5GDZWmo94VZWJA609b8O9_bBdxPKCfOBo7N2SQdNrDGqkVEDx7PRL3cheM82p61VdXMtU2LdQKkwz-mE1iPIwRX8-Q4-udRcSG2y5ysw","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","target":"openid profile user.read email","cached_at":"1594079956","expires_on":"1594083555","extended_expires_on":"1594087154"}},"RefreshToken":{"uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid"},"uid.utid-login.microsoftonline.com-refreshtoken-1--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid","familyId":"1"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-refreshtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b--":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"RefreshToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"0.ASgAqPq4kJXMDkamGO53C-4XWVm3ypmrKgtCkdhePY1PBjsoACg.AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPxyufQG6n7rLpp8aUMmmwdQ9_mRxvB3zvo5l1c-zE70M2hJsgbEORPhC2xb4fgj_aH34wzgeaDycbO6pS06r6rbvFgtzuu4uie-U10B9kZ35dy2G58P8NkOALI82p4rKemqZnUQuJIwf-DqvQCcCQXMrz6RutodmNcI-tCgmY7mdmQL4ltS3glPM1Oe7aKWrj6wlZuOJjtDH7tfURJBRoNy9jWCKYRj6jH-Oj-Fv0jn7nQns4GxHlElz-SWlfCQwW_mz0N2vOcSrUUKBDFgLl11_uQbUkRvyjT1J2m9MxoYaJY3K-MaqUtMeAIAdgf5zOyAN9QrAQVKNSHwi3gfy22Ah_CSUpIn0vdmiicG1B095xJOv9s5ggSc8bmUzLazzoXnH1lIB35S3yPnUAWjLAecAYG8KDkgBCeNG-C80yeBEHc9biHV4ySfQEbO-zq2uXJlzRHai-ZANhM_djiW0CgSi8hzA5sgsQ3qOo3Q7pnh175zGTWx9B64URy4bxQWbabes6XD6EIT9FDqzKMaUhAggPKoROqSDaSS7qlPzI8FRcq9O1iprvDmv0ik9s7ZPF9RQqN0cdzPS2P8pgHEn__2H5UIiE62sG90lVn768Yaet_AE9ChxvGGbtFf3-zzctlSlurcemTbrC95kcgvWJNaiJZcoTggvqy1idJxt90Xx8phEf5o_knvoC94ZjZHH0tRrcLmDGcJDkGSbL-kBHnS645_OxdyejCRnW-5yLUWs-LUIuhLYbHXDU6zTOnElCtpTtt_18foqBUykuWlcZsOWEJELTphSfk0928FZtWfizOgpYDNjS6Jwccvpf6W9j2KQLsZKfi6gNNGfDA5sJ9Xp1T04C7LpRfoDWgDXMNMgAA"}},"IdToken":{"uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-":{"realm":"microsoft","environment":"login.microsoftonline.com","credential_type":"IdToken","secret":"header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature","client_id":"mock_client_id","home_account_id":"uid.utid"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-idtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"IdToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiI5OWNhYjc1OS0yYWFiLTQyMGItOTFkOC01ZTNkOGQ0ZjA2M2IiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5L3YyLjAiLCJpYXQiOjE1OTQwNzk2NjAsIm5iZiI6MTU5NDA3OTY2MCwiZXhwIjoxNTk0MDgzNTYwLCJuYW1lIjoiVGVzdCBVc2VyIiwib2lkIjoiZmIzNjgwZWMtN2I5OC00ZTFjLTg0MzQtNWJlMTZjNWU3OGZkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1dGkiOiJWNENnY1ZHaGlVQ2h3WXoyNEtPNUFBIiwidmVyIjoiMi4wIn0.C2ZQpf_OLYo7zZWlxeQNju6bhUHc_O8KKzT-vTp7Acqw2tS_hZLkJ1OfyTC572GAaxjSOtSG3yx9k66bBrwEzxxM4lwgglyTuHqWgLhaPzrs7C2d8KA_rRMNiSTSKymFNsH8P5w6wa4bHqLSt1AKmZhTnLC2f3nG3KShg6qHalRnWPGOMB_2uZAUfnr4VLv96gaFMSZ5cRKwmBQJjsvbXZk6udEOVVKZsAJi2Arl06JK8FjFiDpS7DAgcIw-zJvucntZYdhr0-dTeVtnggfP2jn0SYPd_zCfrPh3EQLpbVNbjBJRVDSBcO4P3W9dw0ao4-g-4dZRRe_21uOoIthLxQ","realm":"90b8faa8-cc95-460e-a618-ee770bee1759"}},"AppMetadata":{"appmetadata-login.microsoftonline.com-mock_client_id":{"environment":"login.microsoftonline.com","family_id":"1","client_id":"mock_client_id"}}} \ No newline at end of file diff --git a/samples/msal-node-samples/silent-flow/graph.js b/samples/msal-node-samples/silent-flow/graph.js index e7ec4c7170..0e54afe78f 100644 --- a/samples/msal-node-samples/silent-flow/graph.js +++ b/samples/msal-node-samples/silent-flow/graph.js @@ -1,22 +1,17 @@ -const fetch = require('node-fetch'); +const axios = require('axios'); module.exports = { callMSGraph: function(endpoint, accessToken, callback) { - const headers = new fetch.Headers(); - const bearer = `Bearer ${accessToken}`; - - headers.append("Authorization", bearer); - const options = { - method: "GET", - headers: headers + headers: { + Authorization: `Bearer ${accessToken}` + } }; console.log('request made to Graph API at: ' + new Date().toString()); - fetch(endpoint, options) - .then(response => response.json()) - .then(response => callback(response, endpoint)) + axios.default.get(endpoint, options) + .then(response => callback(response.data, endpoint)) .catch(error => console.log(error)); }, diff --git a/samples/msal-node-samples/silent-flow/package-lock.json b/samples/msal-node-samples/silent-flow/package-lock.json index a0f01bdc03..6aa6d456dc 100644 --- a/samples/msal-node-samples/silent-flow/package-lock.json +++ b/samples/msal-node-samples/silent-flow/package-lock.json @@ -23,6 +23,14 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -196,6 +204,24 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -351,11 +377,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", diff --git a/samples/msal-node-samples/silent-flow/package.json b/samples/msal-node-samples/silent-flow/package.json index 088a86dd46..ec1e31d78f 100644 --- a/samples/msal-node-samples/silent-flow/package.json +++ b/samples/msal-node-samples/silent-flow/package.json @@ -12,8 +12,8 @@ "license": "MIT", "dependencies": { "@azure/msal-node": "^0.1.0", + "axios": "^0.19.2", "express": "^4.17.1", - "express-handlebars": "^4.0.4", - "node-fetch": "^2.6.0" + "express-handlebars": "^4.0.4" } } From 8977f7ad521cd066fe8603190fce40f10c595981 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 17:16:05 -0700 Subject: [PATCH 7/9] Update silent sample UI to display complete graph response on a side column --- .../msal-node-samples/silent-flow/graph.js | 10 ------ .../msal-node-samples/silent-flow/index.js | 2 +- .../silent-flow/views/graph.hbs | 31 +++++++++++++------ .../silent-flow/views/layouts/main.hbs | 18 +---------- .../silent-flow/views/login.hbs | 8 ++++- 5 files changed, 30 insertions(+), 39 deletions(-) diff --git a/samples/msal-node-samples/silent-flow/graph.js b/samples/msal-node-samples/silent-flow/graph.js index 0e54afe78f..ebf7d1309b 100644 --- a/samples/msal-node-samples/silent-flow/graph.js +++ b/samples/msal-node-samples/silent-flow/graph.js @@ -13,15 +13,5 @@ module.exports = { axios.default.get(endpoint, options) .then(response => callback(response.data, endpoint)) .catch(error => console.log(error)); - }, - - buildGraphProfile: function(graphResponse) { - return { - name: graphResponse.displayName, - title: graphResponse.jobTitle, - mail: graphResponse.mail, - phone: graphResponse.businessPhones[0], - location: graphResponse.officeLocation - } } }; \ No newline at end of file diff --git a/samples/msal-node-samples/silent-flow/index.js b/samples/msal-node-samples/silent-flow/index.js index 9c46955c95..53c4710431 100644 --- a/samples/msal-node-samples/silent-flow/index.js +++ b/samples/msal-node-samples/silent-flow/index.js @@ -133,7 +133,7 @@ app.get('/graphCall', (req, res) => { templateParams = { ...templateParams, username, - profile: graph.buildGraphProfile(response) + profile: JSON.stringify(response, null, 4) }; res.render("graph", templateParams) return msalCacheManager.writeToPersistence(); diff --git a/samples/msal-node-samples/silent-flow/views/graph.hbs b/samples/msal-node-samples/silent-flow/views/graph.hbs index dd66b308e6..1ed3e6a9ed 100644 --- a/samples/msal-node-samples/silent-flow/views/graph.hbs +++ b/samples/msal-node-samples/silent-flow/views/graph.hbs @@ -1,12 +1,23 @@ -
Welcome, {{username}}, you have signed in successfully!
+
+
+
+
Welcome, {{username}}, you have signed in successfully!
+
+
+ See Profile +
+
+


-{{#if profile}} -

Name: {{profile.name}}

-

Title: {{profile.title}}

-

Mail: {{profile.mail}}

-

Phone: {{profile.phone}}

-

Location: {{profile.location}}

-{{else}} - See Profile -{{/if}} \ No newline at end of file +
+
+
+
+
+ +
\ No newline at end of file diff --git a/samples/msal-node-samples/silent-flow/views/layouts/main.hbs b/samples/msal-node-samples/silent-flow/views/layouts/main.hbs index 9335896c12..08c7bf8b7d 100644 --- a/samples/msal-node-samples/silent-flow/views/layouts/main.hbs +++ b/samples/msal-node-samples/silent-flow/views/layouts/main.hbs @@ -24,23 +24,7 @@
MSAL Node.js demonstrating Silent Flow

-
-
-
- {{{body}}} -
-
-
-
-
-
-
-
-
-
- -
+ {{{body}}}


diff --git a/samples/msal-node-samples/silent-flow/views/login.hbs b/samples/msal-node-samples/silent-flow/views/login.hbs index 5152eca2f8..349f1037c5 100644 --- a/samples/msal-node-samples/silent-flow/views/login.hbs +++ b/samples/msal-node-samples/silent-flow/views/login.hbs @@ -1 +1,7 @@ -
Please sign-in to acquire a token silently
\ No newline at end of file +
+
+
+
Please sign-in to acquire a token silently
+
+
+:
\ No newline at end of file From 458db6083bf6db7293d50d44a900216c91c46418 Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 17:19:12 -0700 Subject: [PATCH 8/9] Remove array braces around silent sample redirect uri string --- samples/msal-node-samples/silent-flow/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/msal-node-samples/silent-flow/index.js b/samples/msal-node-samples/silent-flow/index.js index 53c4710431..dcfa3016f8 100644 --- a/samples/msal-node-samples/silent-flow/index.js +++ b/samples/msal-node-samples/silent-flow/index.js @@ -57,7 +57,7 @@ const scopes = ["user.read"]; const authCodeUrlParameters = { scopes: scopes, - redirectUri: ["http://localhost:3000/redirect"], + redirectUri: "http://localhost:3000/redirect", }; const pca = new msal.PublicClientApplication(publicClientConfig); From 6b614ae3f111abf594f2db64b0f62ae363648d4b Mon Sep 17 00:00:00 2001 From: Hector Mg Date: Mon, 6 Jul 2020 17:28:19 -0700 Subject: [PATCH 9/9] Revert examples.cache.json to example cache --- .../silent-flow/data/example.cache.json | 74 ++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/samples/msal-node-samples/silent-flow/data/example.cache.json b/samples/msal-node-samples/silent-flow/data/example.cache.json index f325578f38..41aea2382a 100644 --- a/samples/msal-node-samples/silent-flow/data/example.cache.json +++ b/samples/msal-node-samples/silent-flow/data/example.cache.json @@ -1 +1,73 @@ -{"Account":{"uid.utid-login.microsoftonline.com-microsoft":{"username":"John Doe","local_account_id":"object1234","realm":"microsoft","environment":"login.microsoftonline.com","home_account_id":"uid.utid","authority_type":"MSSTS","client_info":"base64encodedjson"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-90b8faa8-cc95-460e-a618-ee770bee1759":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","local_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd","username":"user@sgonz.onmicrosoft.com","authority_type":"MSSTS","name":"Test User","client_info":"eyJ1aWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJ1dGlkIjoiOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5In0"}},"AccessToken":{"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope1 scope2 scope3","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5":{"environment":"login.microsoftonline.com","credential_type":"AccessToken","secret":"an access token","realm":"microsoft","target":"scope4 scope5","client_id":"mock_client_id","cached_at":"1000","home_account_id":"uid.utid","extended_expires_on":"4600","expires_on":"4600"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-accesstoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-openid profile user.read email":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"AccessToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IlZpLWtlTlRqZFltWWhDNHB3QnNyTFV0WnZGOVVvY296UHVDQUZqMzcyOHciLCJhbGciOiJSUzI1NiIsIng1dCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC85MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkvIiwiaWF0IjoxNTk0MDc5NjYwLCJuYmYiOjE1OTQwNzk2NjAsImV4cCI6MTU5NDA4MzU2MCwiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkUyQmdZRGpKTi9WY1Fjd0tkejFwNWNtTTdwUFRydDIrZFVZM2pXMm5pY3FzeThLMXpHMEEiLCJhbXIiOlsicHdkIl0sImFwcF9kaXNwbGF5bmFtZSI6Ik5vZGVBdXRoQ29kZSIsImFwcGlkIjoiOTljYWI3NTktMmFhYi00MjBiLTkxZDgtNWUzZDhkNGYwNjNiIiwiYXBwaWRhY3IiOiIwIiwiaXBhZGRyIjoiNzEuMjMxLjEzNi41NCIsIm5hbWUiOiJUZXN0IFVzZXIiLCJvaWQiOiJmYjM2ODBlYy03Yjk4LTRlMWMtODQzNC01YmUxNmM1ZTc4ZmQiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzIwMDA5Mzk5MEY2RiIsInB3ZF9leHAiOiI2MzM4MiIsInB3ZF91cmwiOiJodHRwczovL3BvcnRhbC5taWNyb3NvZnRvbmxpbmUuY29tL0NoYW5nZVBhc3N3b3JkLmFzcHgiLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInNjcCI6Im9wZW5pZCBwcm9maWxlIFVzZXIuUmVhZCBlbWFpbCIsInN1YiI6IkV3dTlBOXJuYlJNVzlZRWhfdnZHeC1KSHdreVhIcjlYekZTR3M2STVkMzAiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1bmlxdWVfbmFtZSI6InVzZXJAc2dvbnoub25taWNyb3NvZnQuY29tIiwidXBuIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJWNENnY1ZHaGlVQ2h3WXoyNEtPNUFBIiwidmVyIjoiMS4wIiwieG1zX3N0Ijp7InN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kifSwieG1zX3RjZHQiOjE1NDU1MjA3Njh9.j6g-zI_qUkI4cAD5m6p0qXPdFW268mJ8iBhgDw5avY1zxtG1w_5DLXw2dqOF567U5pf1yyf2pnEmgT8hrfyCsUznDhfhONlaTlN_s2t8RuBIBisHKhzbYgsS_J0sm59QXy23PUrbYhbKKBUjs-biYNyrmqRQy4oJHMY0QFyFNhqCwoJmUKS71zKaaI6j-7IkU6CrqdN5ol4FShAbA7KyhqJDtDbTDv9vflXBWREwUG7p8K5GDZWmo94VZWJA609b8O9_bBdxPKCfOBo7N2SQdNrDGqkVEDx7PRL3cheM82p61VdXMtU2LdQKkwz-mE1iPIwRX8-Q4-udRcSG2y5ysw","realm":"90b8faa8-cc95-460e-a618-ee770bee1759","target":"openid profile user.read email","cached_at":"1594079956","expires_on":"1594083555","extended_expires_on":"1594087154"}},"RefreshToken":{"uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid"},"uid.utid-login.microsoftonline.com-refreshtoken-1--":{"environment":"login.microsoftonline.com","credential_type":"RefreshToken","secret":"a refresh token","client_id":"mock_client_id","home_account_id":"uid.utid","familyId":"1"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-refreshtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b--":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"RefreshToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"0.ASgAqPq4kJXMDkamGO53C-4XWVm3ypmrKgtCkdhePY1PBjsoACg.AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPxyufQG6n7rLpp8aUMmmwdQ9_mRxvB3zvo5l1c-zE70M2hJsgbEORPhC2xb4fgj_aH34wzgeaDycbO6pS06r6rbvFgtzuu4uie-U10B9kZ35dy2G58P8NkOALI82p4rKemqZnUQuJIwf-DqvQCcCQXMrz6RutodmNcI-tCgmY7mdmQL4ltS3glPM1Oe7aKWrj6wlZuOJjtDH7tfURJBRoNy9jWCKYRj6jH-Oj-Fv0jn7nQns4GxHlElz-SWlfCQwW_mz0N2vOcSrUUKBDFgLl11_uQbUkRvyjT1J2m9MxoYaJY3K-MaqUtMeAIAdgf5zOyAN9QrAQVKNSHwi3gfy22Ah_CSUpIn0vdmiicG1B095xJOv9s5ggSc8bmUzLazzoXnH1lIB35S3yPnUAWjLAecAYG8KDkgBCeNG-C80yeBEHc9biHV4ySfQEbO-zq2uXJlzRHai-ZANhM_djiW0CgSi8hzA5sgsQ3qOo3Q7pnh175zGTWx9B64URy4bxQWbabes6XD6EIT9FDqzKMaUhAggPKoROqSDaSS7qlPzI8FRcq9O1iprvDmv0ik9s7ZPF9RQqN0cdzPS2P8pgHEn__2H5UIiE62sG90lVn768Yaet_AE9ChxvGGbtFf3-zzctlSlurcemTbrC95kcgvWJNaiJZcoTggvqy1idJxt90Xx8phEf5o_knvoC94ZjZHH0tRrcLmDGcJDkGSbL-kBHnS645_OxdyejCRnW-5yLUWs-LUIuhLYbHXDU6zTOnElCtpTtt_18foqBUykuWlcZsOWEJELTphSfk0928FZtWfizOgpYDNjS6Jwccvpf6W9j2KQLsZKfi6gNNGfDA5sJ9Xp1T04C7LpRfoDWgDXMNMgAA"}},"IdToken":{"uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-":{"realm":"microsoft","environment":"login.microsoftonline.com","credential_type":"IdToken","secret":"header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature","client_id":"mock_client_id","home_account_id":"uid.utid"},"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759-login.windows.net-idtoken-99cab759-2aab-420b-91d8-5e3d8d4f063b-90b8faa8-cc95-460e-a618-ee770bee1759-":{"home_account_id":"fb3680ec-7b98-4e1c-8434-5be16c5e78fd.90b8faa8-cc95-460e-a618-ee770bee1759","environment":"login.windows.net","credential_type":"IdToken","client_id":"99cab759-2aab-420b-91d8-5e3d8d4f063b","secret":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlNzWnNCTmhaY0YzUTlTNHRycFFCVEJ5TlJSSSJ9.eyJhdWQiOiI5OWNhYjc1OS0yYWFiLTQyMGItOTFkOC01ZTNkOGQ0ZjA2M2IiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTBiOGZhYTgtY2M5NS00NjBlLWE2MTgtZWU3NzBiZWUxNzU5L3YyLjAiLCJpYXQiOjE1OTQwNzk2NjAsIm5iZiI6MTU5NDA3OTY2MCwiZXhwIjoxNTk0MDgzNTYwLCJuYW1lIjoiVGVzdCBVc2VyIiwib2lkIjoiZmIzNjgwZWMtN2I5OC00ZTFjLTg0MzQtNWJlMTZjNWU3OGZkIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidXNlckBzZ29uei5vbm1pY3Jvc29mdC5jb20iLCJyaCI6IjAuQVNnQXFQcTRrSlhNRGthbUdPNTNDLTRYV1ZtM3lwbXJLZ3RDa2RoZVBZMVBCanNvQUNnLiIsInN1YiI6IjAzdTFoS09zb3JBdHNpMF9IckFZcS1DOEFuNmJlSXVsc09GTHpRSmV6a1kiLCJ0aWQiOiI5MGI4ZmFhOC1jYzk1LTQ2MGUtYTYxOC1lZTc3MGJlZTE3NTkiLCJ1dGkiOiJWNENnY1ZHaGlVQ2h3WXoyNEtPNUFBIiwidmVyIjoiMi4wIn0.C2ZQpf_OLYo7zZWlxeQNju6bhUHc_O8KKzT-vTp7Acqw2tS_hZLkJ1OfyTC572GAaxjSOtSG3yx9k66bBrwEzxxM4lwgglyTuHqWgLhaPzrs7C2d8KA_rRMNiSTSKymFNsH8P5w6wa4bHqLSt1AKmZhTnLC2f3nG3KShg6qHalRnWPGOMB_2uZAUfnr4VLv96gaFMSZ5cRKwmBQJjsvbXZk6udEOVVKZsAJi2Arl06JK8FjFiDpS7DAgcIw-zJvucntZYdhr0-dTeVtnggfP2jn0SYPd_zCfrPh3EQLpbVNbjBJRVDSBcO4P3W9dw0ao4-g-4dZRRe_21uOoIthLxQ","realm":"90b8faa8-cc95-460e-a618-ee770bee1759"}},"AppMetadata":{"appmetadata-login.microsoftonline.com-mock_client_id":{"environment":"login.microsoftonline.com","family_id":"1","client_id":"mock_client_id"}}} \ No newline at end of file +{ + "Account": { + "uid.utid-login.microsoftonline.com-microsoft": { + "username": "John Doe", + "local_account_id": "object1234", + "realm": "microsoft", + "environment": "login.microsoftonline.com", + "home_account_id": "uid.utid", + "authority_type": "MSSTS", + "client_info": "base64encodedjson" + } + }, + "AccessToken": { + "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope1 scope2 scope3": { + "environment": "login.microsoftonline.com", + "credential_type": "AccessToken", + "secret": "an access token", + "realm": "microsoft", + "target": "scope1 scope2 scope3", + "client_id": "mock_client_id", + "cached_at": "1000", + "home_account_id": "uid.utid", + "extended_expires_on": "4600", + "expires_on": "4600" + }, + "uid.utid-login.microsoftonline.com-accesstoken-mock_client_id-microsoft-scope4 scope5": { + "environment": "login.microsoftonline.com", + "credential_type": "AccessToken", + "secret": "an access token", + "realm": "microsoft", + "target": "scope4 scope5", + "client_id": "mock_client_id", + "cached_at": "1000", + "home_account_id": "uid.utid", + "extended_expires_on": "4600", + "expires_on": "4600" + } + }, + "RefreshToken": { + "uid.utid-login.microsoftonline.com-refreshtoken-mock_client_id--": { + "environment": "login.microsoftonline.com", + "credential_type": "RefreshToken", + "secret": "a refresh token", + "client_id": "mock_client_id", + "home_account_id": "uid.utid" + }, + "uid.utid-login.microsoftonline.com-refreshtoken-1--": { + "environment": "login.microsoftonline.com", + "credential_type": "RefreshToken", + "secret": "a refresh token", + "client_id": "mock_client_id", + "home_account_id": "uid.utid", + "familyId": "1" + } + }, + "IdToken": { + "uid.utid-login.microsoftonline.com-idtoken-mock_client_id-microsoft-": { + "realm": "microsoft", + "environment": "login.microsoftonline.com", + "credential_type": "IdToken", + "secret": "header.eyJvaWQiOiAib2JqZWN0MTIzNCIsICJwcmVmZXJyZWRfdXNlcm5hbWUiOiAiSm9obiBEb2UiLCAic3ViIjogInN1YiJ9.signature", + "client_id": "mock_client_id", + "home_account_id": "uid.utid" + } + }, + "AppMetadata": { + "appmetadata-login.microsoftonline.com-mock_client_id": { + "environment": "login.microsoftonline.com", + "family_id": "1", + "client_id": "mock_client_id" + } + } +} \ No newline at end of file