UNPKG

msal

Version:
1,251 lines (1,227 loc) 727 kB
/*! msal v1.1.3 2019-08-14 */ 'use strict'; (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("Msal", [], factory); else if(typeof exports === 'object') exports["Msal"] = factory(); else root["Msal"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 24); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ Object.defineProperty(exports, "__esModule", { value: true }); var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } exports.__extends = __extends; exports.__assign = function () { exports.__assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return exports.__assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } exports.__rest = __rest; function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } exports.__decorate = __decorate; function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); }; } exports.__param = __param; function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } exports.__metadata = __metadata; function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } exports.__awaiter = __awaiter; function __generator(thisArg, body) { var _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } exports.__generator = __generator; function __exportStar(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } exports.__exportStar = __exportStar; function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } exports.__values = __values; function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } exports.__read = __read; function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } exports.__spread = __spread; function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; } exports.__spreadArrays = __spreadArrays; ; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } exports.__await = __await; function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } exports.__asyncGenerator = __asyncGenerator; function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } exports.__asyncDelegator = __asyncDelegator; function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } } exports.__asyncValues = __asyncValues; function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } exports.__makeTemplateObject = __makeTemplateObject; ; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result.default = mod; return result; } exports.__importStar = __importStar; function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } exports.__importDefault = __importDefault; /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); /** * @hidden */ var StringUtils = /** @class */ (function () { function StringUtils() { } /** * Check if a string is empty * * @param str */ StringUtils.isEmpty = function (str) { return (typeof str === "undefined" || !str || 0 === str.length); }; return StringUtils; }()); exports.StringUtils = StringUtils; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. /** * @hidden * Constants */ var Constants = /** @class */ (function () { function Constants() { } Object.defineProperty(Constants, "errorDescription", { get: function () { return "error_description"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "error", { get: function () { return "error"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "scope", { get: function () { return "scope"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "clientInfo", { get: function () { return "client_info"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "clientId", { get: function () { return "clientId"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "idToken", { get: function () { return "id_token"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "adalIdToken", { get: function () { return "adal.idtoken"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "accessToken", { get: function () { return "access_token"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "expiresIn", { get: function () { return "expires_in"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "sessionState", { get: function () { return "session_state"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "claims", { get: function () { return "claims"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "msalClientInfo", { get: function () { return "msal.client.info"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "msalError", { get: function () { return "msal.error"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "msalErrorDescription", { get: function () { return "msal.error.description"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "msalSessionState", { get: function () { return "msal.session.state"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "tokenKeys", { get: function () { return "msal.token.keys"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "accessTokenKey", { get: function () { return "msal.access.token.key"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "expirationKey", { get: function () { return "msal.expiration.key"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "stateLogin", { get: function () { return "msal.state.login"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "stateAcquireToken", { get: function () { return "msal.state.acquireToken"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "stateRenew", { get: function () { return "msal.state.renew"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "nonceIdToken", { get: function () { return "msal.nonce.idtoken"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "userName", { get: function () { return "msal.username"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "idTokenKey", { get: function () { return "msal.idtoken"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "loginRequest", { get: function () { return "msal.login.request"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "loginError", { get: function () { return "msal.login.error"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "renewStatus", { get: function () { return "msal.token.renew.status"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "urlHash", { get: function () { return "msal.urlHash"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "angularLoginRequest", { get: function () { return "msal.angular.login.request"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "msal", { get: function () { return "msal"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "no_account", { get: function () { return "NO_ACCOUNT"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "consumersUtid", { get: function () { return "9188040d-6c67-4c5b-b112-36a304b66dad"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "upn", { get: function () { return "upn"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt_select_account", { get: function () { return "&prompt=select_account"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt_none", { get: function () { return "&prompt=none"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "prompt", { get: function () { return "prompt"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "response_mode_fragment", { get: function () { return "&response_mode=fragment"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "resourceDelimiter", { get: function () { return "|"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "tokenRenewStatusCancelled", { get: function () { return "Canceled"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "tokenRenewStatusCompleted", { get: function () { return "Completed"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "tokenRenewStatusInProgress", { get: function () { return "In Progress"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "popUpWidth", { get: function () { return this._popUpWidth; }, set: function (width) { this._popUpWidth = width; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "popUpHeight", { get: function () { return this._popUpHeight; }, set: function (height) { this._popUpHeight = height; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "login", { get: function () { return "LOGIN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "renewToken", { get: function () { return "RENEW_TOKEN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "unknown", { get: function () { return "UNKNOWN"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "homeAccountIdentifier", { get: function () { return "homeAccountIdentifier"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "common", { get: function () { return "common"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "openidScope", { get: function () { return "openid"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "profileScope", { get: function () { return "profile"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "cacheLocationLocal", { get: function () { return "localStorage"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "cacheLocationSession", { get: function () { return "sessionStorage"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "interactionTypeRedirect", { get: function () { return "redirectInteraction"; }, enumerable: true, configurable: true }); Object.defineProperty(Constants, "interactionTypePopup", { get: function () { return "popupInteraction"; }, enumerable: true, configurable: true }); Constants._popUpWidth = 483; Constants._popUpHeight = 600; return Constants; }()); exports.Constants = Constants; /** * @hidden * CacheKeys for 'authority' and 'account' */ exports.CacheKeys = { AUTHORITY: "msal.authority", ACQUIRE_TOKEN_ACCOUNT: "msal.acquireTokenAccount" }; exports.AADTrustedHostList = { "login.windows.net": "login.windows.net", "login.chinacloudapi.cn": "login.chinacloudapi.cn", "login.cloudgovapi.us": "login.cloudgovapi.us", "login.microsoftonline.com": "login.microsoftonline.com", "login.microsoftonline.de": "login.microsoftonline.de", "login.microsoftonline.us": "login.microsoftonline.us" }; /** * @hidden * SSO Types - generated to populate hints */ exports.SSOTypes = { ACCOUNT: "account", SID: "sid", LOGIN_HINT: "login_hint", ID_TOKEN: "id_token", DOMAIN_HINT: "domain_hint", ORGANIZATIONS: "organizations", CONSUMERS: "consumers", ACCOUNT_ID: "accountIdentifier", HOMEACCOUNT_ID: "homeAccountIdentifier", LOGIN_REQ: "login_req", DOMAIN_REQ: "domain_req" }; /** * @hidden */ exports.BlacklistedEQParams = [ exports.SSOTypes.SID, exports.SSOTypes.LOGIN_HINT ]; /** * we considered making this "enum" in the request instead of string, however it looks like the allowed list of * prompt values kept changing over past couple of years. There are some undocumented prompt values for some * internal partners too, hence the choice of generic "string" type instead of the "enum" * @hidden */ exports.PromptState = { LOGIN: "login", SELECT_ACCOUNT: "select_account", CONSENT: "consent", NONE: "none", }; /** * MSAL JS Library Version */ function libraryVersion() { return "1.1.3"; } exports.libraryVersion = libraryVersion; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); /** * @hidden */ var CryptoUtils = /** @class */ (function () { function CryptoUtils() { } /** * Creates a new random GUID - used to populate state? * @returns string (GUID) */ CryptoUtils.createNewGuid = function () { // RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or // pseudo-random numbers. // The algorithm is as follows: // Set the two most significant bits (bits 6 and 7) of the // clock_seq_hi_and_reserved to zero and one, respectively. // Set the four most significant bits (bits 12 through 15) of the // time_hi_and_version field to the 4-bit version number from // Section 4.1.3. Version4 // Set all the other bits to randomly (or pseudo-randomly) chosen // values. // UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node // time-low = 4hexOctet // time-mid = 2hexOctet // time-high-and-version = 2hexOctet // clock-seq-and-reserved = hexOctet: // clock-seq-low = hexOctet // node = 6hexOctet // Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx // y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10 // y values are 8, 9, A, B var cryptoObj = window.crypto; // for IE 11 if (cryptoObj && cryptoObj.getRandomValues) { var buffer = new Uint8Array(16); cryptoObj.getRandomValues(buffer); //buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number). buffer[6] |= 0x40; //buffer[6] | 01000000 will set the 6 bit to 1. buffer[6] &= 0x4f; //buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4". //buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively. buffer[8] |= 0x80; //buffer[8] | 10000000 will set the 7 bit to 1. buffer[8] &= 0xbf; //buffer[8] & 10111111 will set the 6 bit to 0. return CryptoUtils.decimalToHex(buffer[0]) + CryptoUtils.decimalToHex(buffer[1]) + CryptoUtils.decimalToHex(buffer[2]) + CryptoUtils.decimalToHex(buffer[3]) + "-" + CryptoUtils.decimalToHex(buffer[4]) + CryptoUtils.decimalToHex(buffer[5]) + "-" + CryptoUtils.decimalToHex(buffer[6]) + CryptoUtils.decimalToHex(buffer[7]) + "-" + CryptoUtils.decimalToHex(buffer[8]) + CryptoUtils.decimalToHex(buffer[9]) + "-" + CryptoUtils.decimalToHex(buffer[10]) + CryptoUtils.decimalToHex(buffer[11]) + CryptoUtils.decimalToHex(buffer[12]) + CryptoUtils.decimalToHex(buffer[13]) + CryptoUtils.decimalToHex(buffer[14]) + CryptoUtils.decimalToHex(buffer[15]); } else { var guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"; var hex = "0123456789abcdef"; var r = 0; var guidResponse = ""; for (var i = 0; i < 36; i++) { if (guidHolder[i] !== "-" && guidHolder[i] !== "4") { // each x and y needs to be random r = Math.random() * 16 | 0; } if (guidHolder[i] === "x") { guidResponse += hex[r]; } else if (guidHolder[i] === "y") { // clock-seq-and-reserved first hex is filtered and remaining hex values are random r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? r |= 0x8; // set pos 3 to 1 as 1??? guidResponse += hex[r]; } else { guidResponse += guidHolder[i]; } } return guidResponse; } }; /** * Decimal to Hex * * @param num */ CryptoUtils.decimalToHex = function (num) { var hex = num.toString(16); while (hex.length < 2) { hex = "0" + hex; } return hex; }; // See: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_4_%E2%80%93_escaping_the_string_before_encoding_it /** * encoding string to base64 - platform specific check * * @param input */ CryptoUtils.base64Encode = function (input) { return btoa(encodeURIComponent(input).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) { return String.fromCharCode(Number("0x" + p1)); })); }; /** * decoding base64 token - platform specific check * * @param base64IdToken */ CryptoUtils.base64Decode = function (input) { return decodeURIComponent(atob(input).split("").map(function (c) { return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2); }).join("")); }; /** * deserialize a string * * @param query */ CryptoUtils.deserialize = function (query) { var match; // Regex for replacing addition symbol with a space var pl = /\+/g; var search = /([^&=]+)=([^&]*)/g; var decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }; var obj = {}; match = search.exec(query); while (match) { obj[decode(match[1])] = decode(match[2]); match = search.exec(query); } return obj; }; return CryptoUtils; }()); exports.CryptoUtils = CryptoUtils; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(0); var Constants_1 = __webpack_require__(2); var ClientAuthError_1 = __webpack_require__(6); exports.ClientConfigurationErrorMessage = { configurationNotSet: { code: "no_config_set", desc: "Configuration has not been set. Please call the UserAgentApplication constructor with a valid Configuration object." }, invalidCacheLocation: { code: "invalid_cache_location", desc: "The cache location provided is not valid." }, noStorageSupported: { code: "browser_storage_not_supported", desc: "localStorage and sessionStorage are not supported." }, noRedirectCallbacksSet: { code: "no_redirect_callbacks", desc: "No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. " + "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics." }, invalidCallbackObject: { code: "invalid_callback_object", desc: "The object passed for the callback was invalid. " + "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics." }, scopesRequired: { code: "scopes_required", desc: "Scopes are required to obtain an access token." }, emptyScopes: { code: "empty_input_scopes_error", desc: "Scopes cannot be passed as empty array." }, nonArrayScopes: { code: "nonarray_input_scopes_error", desc: "Scopes cannot be passed as non-array." }, clientScope: { code: "clientid_input_scopes_error", desc: "Client ID can only be provided as a single scope." }, invalidPrompt: { code: "invalid_prompt_value", desc: "Supported prompt values are 'login', 'select_account', 'consent' and 'none'", }, invalidAuthorityType: { code: "invalid_authority_type", desc: "The given authority is not a valid type of authority supported by MSAL. Please see here for valid authorities: <insert URL here>." }, authorityUriInsecure: { code: "authority_uri_insecure", desc: "Authority URIs must use https." }, authorityUriInvalidPath: { code: "authority_uri_invalid_path", desc: "Given authority URI is invalid." }, unsupportedAuthorityValidation: { code: "unsupported_authority_validation", desc: "The authority validation is not supported for this authority type." }, b2cAuthorityUriInvalidPath: { code: "b2c_authority_uri_invalid_path", desc: "The given URI for the B2C authority is invalid." }, claimsRequestParsingError: { code: "claims_request_parsing_error", desc: "Could not parse the given claims request object." }, emptyRequestError: { code: "empty_request_error", desc: "Request object is required." }, telemetryConfigError: { code: "telemetry_config_error", desc: "Telemetry config is not configured with required values" } }; /** * Error thrown when there is an error in configuration of the .js library. */ var ClientConfigurationError = /** @class */ (function (_super) { tslib_1.__extends(ClientConfigurationError, _super); function ClientConfigurationError(errorCode, errorMessage) { var _this = _super.call(this, errorCode, errorMessage) || this; _this.name = "ClientConfigurationError"; Object.setPrototypeOf(_this, ClientConfigurationError.prototype); return _this; } ClientConfigurationError.createNoSetConfigurationError = function () { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.configurationNotSet.code, "" + exports.ClientConfigurationErrorMessage.configurationNotSet.desc); }; ClientConfigurationError.createInvalidCacheLocationConfigError = function (givenCacheLocation) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.invalidCacheLocation.code, exports.ClientConfigurationErrorMessage.invalidCacheLocation.desc + " Provided value: " + givenCacheLocation + ". Possible values are: " + Constants_1.Constants.cacheLocationLocal + ", " + Constants_1.Constants.cacheLocationSession + "."); }; ClientConfigurationError.createNoStorageSupportedError = function () { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.noStorageSupported.code, exports.ClientConfigurationErrorMessage.noStorageSupported.desc); }; ClientConfigurationError.createRedirectCallbacksNotSetError = function () { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.noRedirectCallbacksSet.code, exports.ClientConfigurationErrorMessage.noRedirectCallbacksSet.desc); }; ClientConfigurationError.createInvalidCallbackObjectError = function (callbackObject) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.invalidCallbackObject.code, exports.ClientConfigurationErrorMessage.invalidCallbackObject.desc + " Given value for callback function: " + callbackObject); }; ClientConfigurationError.createEmptyScopesArrayError = function (scopesValue) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.emptyScopes.code, exports.ClientConfigurationErrorMessage.emptyScopes.desc + " Given value: " + scopesValue + "."); }; ClientConfigurationError.createScopesNonArrayError = function (scopesValue) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.nonArrayScopes.code, exports.ClientConfigurationErrorMessage.nonArrayScopes.desc + " Given value: " + scopesValue + "."); }; ClientConfigurationError.createClientIdSingleScopeError = function (scopesValue) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.clientScope.code, exports.ClientConfigurationErrorMessage.clientScope.desc + " Given value: " + scopesValue + "."); }; ClientConfigurationError.createScopesRequiredError = function (scopesValue) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.scopesRequired.code, exports.ClientConfigurationErrorMessage.scopesRequired.desc + " Given value: " + scopesValue); }; ClientConfigurationError.createInvalidPromptError = function (promptValue) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.invalidPrompt.code, exports.ClientConfigurationErrorMessage.invalidPrompt.desc + " Given value: " + promptValue); }; ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) { return new ClientConfigurationError(exports.ClientConfigurationErrorMessage.claimsRequestParsingError.code, exports.ClientConfigurationErrorMessage.claimsRequestParsingError.desc + " Given value: " + claimsRequestParseError); }; ClientConfigurationError.createEmptyRequestError = function () { var _a = exports.ClientConfigurationErrorMessage.emptyRequestError, code = _a.code, desc = _a.desc; return new ClientConfigurationError(code, desc); }; ClientConfigurationError.createTelemetryConfigError = function (config) { var _a = exports.ClientConfigurationErrorMessage.telemetryConfigError, code = _a.code, desc = _a.desc; var requiredKeys = { applicationName: "string", applicationVersion: "string", telemetryEmitter: "function" }; var missingKeys = Object.keys(requiredKeys) .reduce(function (keys, key) { return config[key] ? keys : keys.concat([key + " (" + requiredKeys[key] + ")"]); }, []); return new ClientConfigurationError(code, desc + " mising values: " + missingKeys.join(",")); }; return ClientConfigurationError; }(ClientAuthError_1.ClientAuthError)); exports.ClientConfigurationError = ClientConfigurationError; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); var Constants_1 = __webpack_require__(2); var ScopeSet_1 = __webpack_require__(13); var StringUtils_1 = __webpack_require__(1); /** * @hidden */ var UrlUtils = /** @class */ (function () { function UrlUtils() { } /** * generates the URL with QueryString Parameters * @param scopes */ UrlUtils.createNavigateUrl = function (serverRequestParams) { var str = this.createNavigationUrlString(serverRequestParams); var authEndpoint = serverRequestParams.authorityInstance.AuthorizationEndpoint; // if the endpoint already has queryparams, lets add to it, otherwise add the first one if (authEndpoint.indexOf("?") < 0) { authEndpoint += "?"; } else { authEndpoint += "&"; } var requestUrl = "" + authEndpoint + str.join("&"); return requestUrl; }; /** * Generate the array of all QueryStringParams to be sent to the server * @param scopes */ UrlUtils.createNavigationUrlString = function (serverRequestParams) { var scopes = serverRequestParams.scopes; if (scopes.indexOf(serverRequestParams.clientId) === -1) { scopes.push(serverRequestParams.clientId); } var str = []; str.push("response_type=" + serverRequestParams.responseType); this.translateclientIdUsedInScope(scopes, serverRequestParams.clientId); str.push("scope=" + encodeURIComponent(ScopeSet_1.ScopeSet.parseScope(scopes))); str.push("client_id=" + encodeURIComponent(serverRequestParams.clientId)); str.push("redirect_uri=" + encodeURIComponent(serverRequestParams.redirectUri)); str.push("state=" + encodeURIComponent(serverRequestParams.state)); str.push("nonce=" + encodeURIComponent(serverRequestParams.nonce)); str.push("client_info=1"); str.push("x-client-SKU=" + serverRequestParams.xClientSku); str.push("x-client-Ver=" + serverRequestParams.xClientVer); if (serverRequestParams.promptValue) { str.push("prompt=" + encodeURIComponent(serverRequestParams.promptValue)); } if (serverRequestParams.claimsValue) { str.push("claims=" + encodeURIComponent(serverRequestParams.claimsValue)); } if (serverRequestParams.queryParameters) { str.push(serverRequestParams.queryParameters); } if (serverRequestParams.extraQueryParameters) { str.push(serverRequestParams.extraQueryParameters); } str.push("client-request-id=" + encodeURIComponent(serverRequestParams.correlationId)); return str; }; /** * append the required scopes: https://openid.net/specs/openid-connect-basic-1_0.html#Scopes * @param scopes */ UrlUtils.translateclientIdUsedInScope = function (scopes, clientId) { var clientIdIndex = scopes.indexOf(clientId); if (clientIdIndex >= 0) { scopes.splice(clientIdIndex, 1); if (scopes.indexOf("openid") === -1) { scopes.push("openid"); } if (scopes.indexOf("profile") === -1) { scopes.push("profile"); } } }; /** * Returns current window URL as redirect uri */ UrlUtils.getDefaultRedirectUri = function () { return window.location.href.split("?")[0].split("#")[0]; }; /** * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d * @param href The url * @param tenantId The tenant id to replace */ UrlUtils.replaceTenantPath = function (url, tenantId) { url = url.toLowerCase(); var urlObject = this.GetUrlComponents(url); var pathArray = urlObject.PathSegments; if (tenantId && (pathArray.length !== 0 && (pathArray[0] === Constants_1.Constants.common || pathArray[0] === Constants_1.SSOTypes.ORGANIZATIONS))) { pathArray[0] = tenantId; } return this.constructAuthorityUriFromObject(urlObject, pathArray); }; UrlUtils.constructAuthorityUriFromObject = function (urlObject, pathArray) { return this.CanonicalizeUri(urlObject.Protocol + "//" + urlObject.HostNameAndPort + "/" + pathArray.join("/")); }; /** * Parses out the components from a url string. * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url. */ UrlUtils.GetUrlComponents = function (url) { if (!url) { throw "Url required"; } // https://gist.github.com/curtisz/11139b2cfcaef4a261e0 var regEx = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); var match = url.match(regEx); if (!match || match.length < 6) { throw "Valid url required"; } var urlComponents = { Protocol: match[1], HostNameAndPort: match[4], AbsolutePath: match[5] }; var pathSegments = urlComponents.AbsolutePath.split("/"); pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements urlComponents.PathSegments = pathSegments; return urlComponents; }; /** * Given a url or path, append a trailing slash if one doesnt exist * * @param url */ UrlUtils.CanonicalizeUri = function (url) { if (url) { url = url.toLowerCase(); } if (url && !UrlUtils.endsWith(url, "/")) { url += "/"; } return url; }; /** * Checks to see if the url ends with the suffix * Required because we are compiling for es5 instead of es6 * @param url * @param str */ // TODO: Rename this, not clear what it is supposed to do UrlUtils.endsWith = function (url, suffix) { if (!url || !suffix) { return false; } return url.indexOf(suffix, url.length - suffix.length) !== -1; }; /** * Utils function to remove the login_hint and domain_hint from the i/p extraQueryParameters * @param url * @param name */ UrlUtils.urlRemoveQueryStringParameter = function (url, name) { if (StringUtils_1.StringUtils.isEmpty(url)) { return url; } var regex = new RegExp("(\\&" + name + "=)[^\&]+"); url = url.replace(regex, ""); // name=value& regex = new RegExp("(" + name + "=)[^\&]+&"); url = url.replace(r