@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +213 -213
- package/dist/app/IPublicClientApplication.d.ts +45 -45
- package/dist/app/IPublicClientApplication.js +96 -96
- package/dist/app/PublicClientApplication.d.ts +244 -244
- package/dist/app/PublicClientApplication.js +307 -307
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
- package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
- package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
- package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
- package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
- package/dist/cache/AsyncMemoryStorage.js +132 -132
- package/dist/cache/BrowserCacheManager.d.ts +376 -377
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +1275 -1276
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.d.ts +11 -11
- package/dist/cache/BrowserStorage.js +35 -35
- package/dist/cache/CryptoKeyStore.d.ts +18 -17
- package/dist/cache/CryptoKeyStore.d.ts.map +1 -1
- package/dist/cache/CryptoKeyStore.js +40 -41
- package/dist/cache/CryptoKeyStore.js.map +1 -1
- package/dist/cache/DatabaseStorage.d.ts +56 -56
- package/dist/cache/DatabaseStorage.js +190 -190
- package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
- package/dist/cache/ITokenCache.d.ts +10 -10
- package/dist/cache/IWindowStorage.d.ts +27 -27
- package/dist/cache/MemoryStorage.d.ts +11 -11
- package/dist/cache/MemoryStorage.js +31 -31
- package/dist/cache/TokenCache.d.ts +76 -76
- package/dist/cache/TokenCache.js +225 -225
- package/dist/config/Configuration.d.ts +187 -203
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.js +97 -101
- package/dist/config/Configuration.js.map +1 -1
- package/dist/controllers/ControllerFactory.d.ts +9 -9
- package/dist/controllers/ControllerFactory.js +37 -37
- package/dist/controllers/IController.d.ts +66 -66
- package/dist/controllers/IController.d.ts.map +1 -1
- package/dist/controllers/StandardController.d.ts +413 -413
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.js +1277 -1272
- package/dist/controllers/StandardController.js.map +1 -1
- package/dist/crypto/BrowserCrypto.d.ts +49 -61
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.js +93 -134
- package/dist/crypto/BrowserCrypto.js.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +72 -73
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +150 -150
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.d.ts +12 -12
- package/dist/crypto/GuidGenerator.js +96 -96
- package/dist/crypto/ISubtleCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.js +24 -24
- package/dist/crypto/PkceGenerator.d.ts +24 -24
- package/dist/crypto/PkceGenerator.js +58 -58
- package/dist/crypto/SignedHttpRequest.d.ts +30 -30
- package/dist/crypto/SignedHttpRequest.js +39 -39
- package/dist/encode/Base64Decode.d.ts +22 -22
- package/dist/encode/Base64Decode.js +73 -73
- package/dist/encode/Base64Encode.d.ts +31 -31
- package/dist/encode/Base64Encode.js +79 -79
- package/dist/error/BrowserAuthError.d.ts +382 -382
- package/dist/error/BrowserAuthError.js +483 -483
- package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
- package/dist/error/BrowserConfigurationAuthError.js +96 -96
- package/dist/error/NativeAuthError.d.ts +57 -56
- package/dist/error/NativeAuthError.d.ts.map +1 -1
- package/dist/error/NativeAuthError.js +93 -88
- package/dist/error/NativeAuthError.js.map +1 -1
- package/dist/event/EventHandler.d.ts +41 -41
- package/dist/event/EventHandler.js +119 -119
- package/dist/event/EventMessage.d.ts +25 -25
- package/dist/event/EventMessage.d.ts.map +1 -1
- package/dist/event/EventMessage.js +68 -67
- package/dist/event/EventMessage.js.map +1 -1
- package/dist/event/EventType.d.ts +28 -26
- package/dist/event/EventType.d.ts.map +1 -1
- package/dist/event/EventType.js +32 -32
- package/dist/event/EventType.js.map +1 -1
- package/dist/index.d.ts +35 -35
- package/dist/index.js +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +53 -52
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +151 -138
- package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.js +521 -517
- package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
- package/dist/interaction_client/PopupClient.d.ts +111 -111
- package/dist/interaction_client/PopupClient.js +476 -476
- package/dist/interaction_client/RedirectClient.d.ts +48 -48
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.js +291 -290
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
- package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
- package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
- package/dist/interaction_client/SilentCacheClient.js +67 -67
- package/dist/interaction_client/SilentCacheClient.js.map +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
- package/dist/interaction_client/SilentIframeClient.js +127 -127
- package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
- package/dist/interaction_client/SilentRefreshClient.js +62 -62
- package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
- package/dist/interaction_client/StandardInteractionClient.js +259 -259
- package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
- package/dist/interaction_handler/InteractionHandler.js +127 -127
- package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
- package/dist/interaction_handler/RedirectHandler.js +118 -118
- package/dist/interaction_handler/SilentHandler.d.ts +47 -47
- package/dist/interaction_handler/SilentHandler.js +162 -162
- package/dist/internals.d.ts +23 -23
- package/dist/internals.js +4 -4
- package/dist/navigation/INavigationClient.d.ts +16 -16
- package/dist/navigation/NavigationClient.d.ts +22 -22
- package/dist/navigation/NavigationClient.js +40 -40
- package/dist/navigation/NavigationOptions.d.ts +12 -12
- package/dist/network/FetchClient.d.ts +26 -26
- package/dist/network/FetchClient.js +99 -99
- package/dist/network/XhrClient.d.ts +40 -40
- package/dist/network/XhrClient.js +117 -117
- package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
- package/dist/operatingcontext/BaseOperatingContext.js +44 -44
- package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/StandardOperatingContext.js +43 -43
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.d.ts.map +1 -1
- package/dist/packageMetadata.js +4 -4
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
- package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
- package/dist/request/EndSessionPopupRequest.d.ts +18 -18
- package/dist/request/EndSessionRequest.d.ts +15 -15
- package/dist/request/PopupRequest.d.ts +32 -32
- package/dist/request/PopupWindowAttributes.d.ts +15 -15
- package/dist/request/RedirectRequest.d.ts +33 -33
- package/dist/request/SilentRequest.d.ts +30 -30
- package/dist/request/SsoSilentRequest.d.ts +26 -26
- package/dist/telemetry/BrowserPerformanceClient.d.ts +37 -38
- package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.js +124 -124
- package/dist/telemetry/BrowserPerformanceClient.js.map +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
- package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
- package/dist/utils/BrowserConstants.d.ts +176 -166
- package/dist/utils/BrowserConstants.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.js +205 -215
- package/dist/utils/BrowserConstants.js.map +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
- package/dist/utils/BrowserProtocolUtils.js +34 -34
- package/dist/utils/BrowserStringUtils.d.ts +26 -26
- package/dist/utils/BrowserStringUtils.js +149 -149
- package/dist/utils/BrowserUtils.d.ts +65 -65
- package/dist/utils/BrowserUtils.js +138 -138
- package/dist/utils/MathUtils.d.ts +11 -11
- package/dist/utils/MathUtils.js +21 -21
- package/lib/msal-browser.cjs.js +18227 -0
- package/lib/msal-browser.cjs.js.map +1 -0
- package/lib/msal-browser.js +18233 -0
- package/lib/msal-browser.js.map +1 -0
- package/lib/msal-browser.min.js +63 -0
- package/package.json +101 -95
- package/dist/crypto/MsBrowserCrypto.d.ts +0 -10
- package/dist/crypto/MsBrowserCrypto.d.ts.map +0 -1
- package/dist/crypto/MsBrowserCrypto.js +0 -88
- package/dist/crypto/MsBrowserCrypto.js.map +0 -1
- package/dist/crypto/MsrBrowserCrypto.d.ts +0 -18
- package/dist/crypto/MsrBrowserCrypto.d.ts.map +0 -1
- package/dist/crypto/MsrBrowserCrypto.js +0 -35
- package/dist/crypto/MsrBrowserCrypto.js.map +0 -1
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { Constants } from '@azure/msal-common';
|
|
4
4
|
import { MathUtils } from '../utils/MathUtils.js';
|
|
5
5
|
|
|
6
|
-
/*
|
|
7
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
-
* Licensed under the MIT License.
|
|
9
|
-
*/
|
|
10
|
-
class GuidGenerator {
|
|
11
|
-
constructor(cryptoObj) {
|
|
12
|
-
this.cryptoObj = cryptoObj;
|
|
13
|
-
}
|
|
14
|
-
/*
|
|
15
|
-
* RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or
|
|
16
|
-
* pseudo-random numbers.
|
|
17
|
-
* The algorithm is as follows:
|
|
18
|
-
* Set the two most significant bits (bits 6 and 7) of the
|
|
19
|
-
* clock_seq_hi_and_reserved to zero and one, respectively.
|
|
20
|
-
* Set the four most significant bits (bits 12 through 15) of the
|
|
21
|
-
* time_hi_and_version field to the 4-bit version number from
|
|
22
|
-
* Section 4.1.3. Version4
|
|
23
|
-
* Set all the other bits to randomly (or pseudo-randomly) chosen
|
|
24
|
-
* values.
|
|
25
|
-
* UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node
|
|
26
|
-
* time-low = 4hexOctet
|
|
27
|
-
* time-mid = 2hexOctet
|
|
28
|
-
* time-high-and-version = 2hexOctet
|
|
29
|
-
* clock-seq-and-reserved = hexOctet:
|
|
30
|
-
* clock-seq-low = hexOctet
|
|
31
|
-
* node = 6hexOctet
|
|
32
|
-
* Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
|
33
|
-
* y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10
|
|
34
|
-
* y values are 8, 9, A, B
|
|
35
|
-
*/
|
|
36
|
-
generateGuid() {
|
|
37
|
-
try {
|
|
38
|
-
const buffer = new Uint8Array(16);
|
|
39
|
-
this.cryptoObj.getRandomValues(buffer);
|
|
40
|
-
// 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).
|
|
41
|
-
buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.
|
|
42
|
-
buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4".
|
|
43
|
-
// 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.
|
|
44
|
-
buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.
|
|
45
|
-
buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.
|
|
46
|
-
return (MathUtils.decimalToHex(buffer[0]) +
|
|
47
|
-
MathUtils.decimalToHex(buffer[1]) +
|
|
48
|
-
MathUtils.decimalToHex(buffer[2]) +
|
|
49
|
-
MathUtils.decimalToHex(buffer[3]) +
|
|
50
|
-
"-" +
|
|
51
|
-
MathUtils.decimalToHex(buffer[4]) +
|
|
52
|
-
MathUtils.decimalToHex(buffer[5]) +
|
|
53
|
-
"-" +
|
|
54
|
-
MathUtils.decimalToHex(buffer[6]) +
|
|
55
|
-
MathUtils.decimalToHex(buffer[7]) +
|
|
56
|
-
"-" +
|
|
57
|
-
MathUtils.decimalToHex(buffer[8]) +
|
|
58
|
-
MathUtils.decimalToHex(buffer[9]) +
|
|
59
|
-
"-" +
|
|
60
|
-
MathUtils.decimalToHex(buffer[10]) +
|
|
61
|
-
MathUtils.decimalToHex(buffer[11]) +
|
|
62
|
-
MathUtils.decimalToHex(buffer[12]) +
|
|
63
|
-
MathUtils.decimalToHex(buffer[13]) +
|
|
64
|
-
MathUtils.decimalToHex(buffer[14]) +
|
|
65
|
-
MathUtils.decimalToHex(buffer[15]));
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
const guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
|
|
69
|
-
const hex = "0123456789abcdef";
|
|
70
|
-
let r = 0;
|
|
71
|
-
let guidResponse = Constants.EMPTY_STRING;
|
|
72
|
-
for (let i = 0; i < 36; i++) {
|
|
73
|
-
if (guidHolder[i] !== "-" && guidHolder[i] !== "4") {
|
|
74
|
-
// each x and y needs to be random
|
|
75
|
-
r = (Math.random() * 16) | 0;
|
|
76
|
-
}
|
|
77
|
-
if (guidHolder[i] === "x") {
|
|
78
|
-
guidResponse += hex[r];
|
|
79
|
-
}
|
|
80
|
-
else if (guidHolder[i] === "y") {
|
|
81
|
-
// clock-seq-and-reserved first hex is filtered and remaining hex values are random
|
|
82
|
-
r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??
|
|
83
|
-
r |= 0x8; // set pos 3 to 1 as 1???
|
|
84
|
-
guidResponse += hex[r];
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
guidResponse += guidHolder[i];
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return guidResponse;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* verifies if a string is GUID
|
|
95
|
-
* @param guid
|
|
96
|
-
*/
|
|
97
|
-
isGuid(guid) {
|
|
98
|
-
const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
99
|
-
return regexGuid.test(guid);
|
|
100
|
-
}
|
|
6
|
+
/*
|
|
7
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
+
* Licensed under the MIT License.
|
|
9
|
+
*/
|
|
10
|
+
class GuidGenerator {
|
|
11
|
+
constructor(cryptoObj) {
|
|
12
|
+
this.cryptoObj = cryptoObj;
|
|
13
|
+
}
|
|
14
|
+
/*
|
|
15
|
+
* RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or
|
|
16
|
+
* pseudo-random numbers.
|
|
17
|
+
* The algorithm is as follows:
|
|
18
|
+
* Set the two most significant bits (bits 6 and 7) of the
|
|
19
|
+
* clock_seq_hi_and_reserved to zero and one, respectively.
|
|
20
|
+
* Set the four most significant bits (bits 12 through 15) of the
|
|
21
|
+
* time_hi_and_version field to the 4-bit version number from
|
|
22
|
+
* Section 4.1.3. Version4
|
|
23
|
+
* Set all the other bits to randomly (or pseudo-randomly) chosen
|
|
24
|
+
* values.
|
|
25
|
+
* UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node
|
|
26
|
+
* time-low = 4hexOctet
|
|
27
|
+
* time-mid = 2hexOctet
|
|
28
|
+
* time-high-and-version = 2hexOctet
|
|
29
|
+
* clock-seq-and-reserved = hexOctet:
|
|
30
|
+
* clock-seq-low = hexOctet
|
|
31
|
+
* node = 6hexOctet
|
|
32
|
+
* Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
|
33
|
+
* y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10
|
|
34
|
+
* y values are 8, 9, A, B
|
|
35
|
+
*/
|
|
36
|
+
generateGuid() {
|
|
37
|
+
try {
|
|
38
|
+
const buffer = new Uint8Array(16);
|
|
39
|
+
this.cryptoObj.getRandomValues(buffer);
|
|
40
|
+
// 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).
|
|
41
|
+
buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.
|
|
42
|
+
buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4".
|
|
43
|
+
// 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.
|
|
44
|
+
buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.
|
|
45
|
+
buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.
|
|
46
|
+
return (MathUtils.decimalToHex(buffer[0]) +
|
|
47
|
+
MathUtils.decimalToHex(buffer[1]) +
|
|
48
|
+
MathUtils.decimalToHex(buffer[2]) +
|
|
49
|
+
MathUtils.decimalToHex(buffer[3]) +
|
|
50
|
+
"-" +
|
|
51
|
+
MathUtils.decimalToHex(buffer[4]) +
|
|
52
|
+
MathUtils.decimalToHex(buffer[5]) +
|
|
53
|
+
"-" +
|
|
54
|
+
MathUtils.decimalToHex(buffer[6]) +
|
|
55
|
+
MathUtils.decimalToHex(buffer[7]) +
|
|
56
|
+
"-" +
|
|
57
|
+
MathUtils.decimalToHex(buffer[8]) +
|
|
58
|
+
MathUtils.decimalToHex(buffer[9]) +
|
|
59
|
+
"-" +
|
|
60
|
+
MathUtils.decimalToHex(buffer[10]) +
|
|
61
|
+
MathUtils.decimalToHex(buffer[11]) +
|
|
62
|
+
MathUtils.decimalToHex(buffer[12]) +
|
|
63
|
+
MathUtils.decimalToHex(buffer[13]) +
|
|
64
|
+
MathUtils.decimalToHex(buffer[14]) +
|
|
65
|
+
MathUtils.decimalToHex(buffer[15]));
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
|
|
69
|
+
const hex = "0123456789abcdef";
|
|
70
|
+
let r = 0;
|
|
71
|
+
let guidResponse = Constants.EMPTY_STRING;
|
|
72
|
+
for (let i = 0; i < 36; i++) {
|
|
73
|
+
if (guidHolder[i] !== "-" && guidHolder[i] !== "4") {
|
|
74
|
+
// each x and y needs to be random
|
|
75
|
+
r = (Math.random() * 16) | 0;
|
|
76
|
+
}
|
|
77
|
+
if (guidHolder[i] === "x") {
|
|
78
|
+
guidResponse += hex[r];
|
|
79
|
+
}
|
|
80
|
+
else if (guidHolder[i] === "y") {
|
|
81
|
+
// clock-seq-and-reserved first hex is filtered and remaining hex values are random
|
|
82
|
+
r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??
|
|
83
|
+
r |= 0x8; // set pos 3 to 1 as 1???
|
|
84
|
+
guidResponse += hex[r];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
guidResponse += guidHolder[i];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return guidResponse;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* verifies if a string is GUID
|
|
95
|
+
* @param guid
|
|
96
|
+
*/
|
|
97
|
+
isGuid(guid) {
|
|
98
|
+
const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
99
|
+
return regexGuid.test(guid);
|
|
100
|
+
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
export { GuidGenerator };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export interface ISubtleCrypto {
|
|
2
|
-
initPrng?(entropy: Uint8Array): void;
|
|
3
|
-
getRandomValues(dataBuffer: Uint8Array): Uint8Array;
|
|
4
|
-
generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
|
|
5
|
-
exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
6
|
-
importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
|
|
7
|
-
sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
|
|
8
|
-
digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
|
|
9
|
-
}
|
|
1
|
+
export interface ISubtleCrypto {
|
|
2
|
+
initPrng?(entropy: Uint8Array): void;
|
|
3
|
+
getRandomValues(dataBuffer: Uint8Array): Uint8Array;
|
|
4
|
+
generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
|
|
5
|
+
exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
6
|
+
importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
|
|
7
|
+
sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
|
|
8
|
+
digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=ISubtleCrypto.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ISubtleCrypto } from "./ISubtleCrypto";
|
|
2
|
-
export declare class ModernBrowserCrypto implements ISubtleCrypto {
|
|
3
|
-
getRandomValues(dataBuffer: Uint8Array): Uint8Array;
|
|
4
|
-
generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
|
|
5
|
-
exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
6
|
-
importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
|
|
7
|
-
sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
|
|
8
|
-
digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
|
|
9
|
-
}
|
|
1
|
+
import { ISubtleCrypto } from "./ISubtleCrypto";
|
|
2
|
+
export declare class ModernBrowserCrypto implements ISubtleCrypto {
|
|
3
|
+
getRandomValues(dataBuffer: Uint8Array): Uint8Array;
|
|
4
|
+
generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
|
|
5
|
+
exportKey(key: CryptoKey): Promise<JsonWebKey>;
|
|
6
|
+
importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
|
|
7
|
+
sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
|
|
8
|
+
digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
|
|
9
|
+
}
|
|
10
10
|
//# sourceMappingURL=ModernBrowserCrypto.d.ts.map
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';
|
|
4
4
|
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
7
|
-
* Licensed under the MIT License.
|
|
8
|
-
*/
|
|
9
|
-
class ModernBrowserCrypto {
|
|
10
|
-
getRandomValues(dataBuffer) {
|
|
11
|
-
return window.crypto.getRandomValues(dataBuffer);
|
|
12
|
-
}
|
|
13
|
-
async generateKey(algorithm, extractable, keyUsages) {
|
|
14
|
-
return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages);
|
|
15
|
-
}
|
|
16
|
-
async exportKey(key) {
|
|
17
|
-
return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);
|
|
18
|
-
}
|
|
19
|
-
async importKey(keyData, algorithm, extractable, keyUsages) {
|
|
20
|
-
return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages);
|
|
21
|
-
}
|
|
22
|
-
async sign(algorithm, key, data) {
|
|
23
|
-
return window.crypto.subtle.sign(algorithm, key, data);
|
|
24
|
-
}
|
|
25
|
-
async digest(algorithm, data) {
|
|
26
|
-
return window.crypto.subtle.digest(algorithm, data);
|
|
27
|
-
}
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
7
|
+
* Licensed under the MIT License.
|
|
8
|
+
*/
|
|
9
|
+
class ModernBrowserCrypto {
|
|
10
|
+
getRandomValues(dataBuffer) {
|
|
11
|
+
return window.crypto.getRandomValues(dataBuffer);
|
|
12
|
+
}
|
|
13
|
+
async generateKey(algorithm, extractable, keyUsages) {
|
|
14
|
+
return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages);
|
|
15
|
+
}
|
|
16
|
+
async exportKey(key) {
|
|
17
|
+
return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);
|
|
18
|
+
}
|
|
19
|
+
async importKey(keyData, algorithm, extractable, keyUsages) {
|
|
20
|
+
return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages);
|
|
21
|
+
}
|
|
22
|
+
async sign(algorithm, key, data) {
|
|
23
|
+
return window.crypto.subtle.sign(algorithm, key, data);
|
|
24
|
+
}
|
|
25
|
+
async digest(algorithm, data) {
|
|
26
|
+
return window.crypto.subtle.digest(algorithm, data);
|
|
27
|
+
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export { ModernBrowserCrypto };
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { PkceCodes } from "@azure/msal-common";
|
|
2
|
-
import { BrowserCrypto } from "./BrowserCrypto";
|
|
3
|
-
/**
|
|
4
|
-
* Class which exposes APIs to generate PKCE codes and code verifiers.
|
|
5
|
-
*/
|
|
6
|
-
export declare class PkceGenerator {
|
|
7
|
-
private base64Encode;
|
|
8
|
-
private cryptoObj;
|
|
9
|
-
constructor(cryptoObj: BrowserCrypto);
|
|
10
|
-
/**
|
|
11
|
-
* Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
|
|
12
|
-
*/
|
|
13
|
-
generateCodes(): Promise<PkceCodes>;
|
|
14
|
-
/**
|
|
15
|
-
* Generates a random 32 byte buffer and returns the base64
|
|
16
|
-
* encoded string to be used as a PKCE Code Verifier
|
|
17
|
-
*/
|
|
18
|
-
private generateCodeVerifier;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a base64 encoded PKCE Code Challenge string from the
|
|
21
|
-
* hash created from the PKCE Code Verifier supplied
|
|
22
|
-
*/
|
|
23
|
-
private generateCodeChallengeFromVerifier;
|
|
24
|
-
}
|
|
1
|
+
import { PkceCodes } from "@azure/msal-common";
|
|
2
|
+
import { BrowserCrypto } from "./BrowserCrypto";
|
|
3
|
+
/**
|
|
4
|
+
* Class which exposes APIs to generate PKCE codes and code verifiers.
|
|
5
|
+
*/
|
|
6
|
+
export declare class PkceGenerator {
|
|
7
|
+
private base64Encode;
|
|
8
|
+
private cryptoObj;
|
|
9
|
+
constructor(cryptoObj: BrowserCrypto);
|
|
10
|
+
/**
|
|
11
|
+
* Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
|
|
12
|
+
*/
|
|
13
|
+
generateCodes(): Promise<PkceCodes>;
|
|
14
|
+
/**
|
|
15
|
+
* Generates a random 32 byte buffer and returns the base64
|
|
16
|
+
* encoded string to be used as a PKCE Code Verifier
|
|
17
|
+
*/
|
|
18
|
+
private generateCodeVerifier;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a base64 encoded PKCE Code Challenge string from the
|
|
21
|
+
* hash created from the PKCE Code Verifier supplied
|
|
22
|
+
*/
|
|
23
|
+
private generateCodeChallengeFromVerifier;
|
|
24
|
+
}
|
|
25
25
|
//# sourceMappingURL=PkceGenerator.d.ts.map
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
4
4
|
import { Base64Encode } from '../encode/Base64Encode.js';
|
|
5
5
|
|
|
6
|
-
/*
|
|
7
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
-
* Licensed under the MIT License.
|
|
9
|
-
*/
|
|
10
|
-
// Constant byte array length
|
|
11
|
-
const RANDOM_BYTE_ARR_LENGTH = 32;
|
|
12
|
-
/**
|
|
13
|
-
* Class which exposes APIs to generate PKCE codes and code verifiers.
|
|
14
|
-
*/
|
|
15
|
-
class PkceGenerator {
|
|
16
|
-
constructor(cryptoObj) {
|
|
17
|
-
this.base64Encode = new Base64Encode();
|
|
18
|
-
this.cryptoObj = cryptoObj;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
|
|
22
|
-
*/
|
|
23
|
-
async generateCodes() {
|
|
24
|
-
const codeVerifier = this.generateCodeVerifier();
|
|
25
|
-
const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);
|
|
26
|
-
return {
|
|
27
|
-
verifier: codeVerifier,
|
|
28
|
-
challenge: codeChallenge,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Generates a random 32 byte buffer and returns the base64
|
|
33
|
-
* encoded string to be used as a PKCE Code Verifier
|
|
34
|
-
*/
|
|
35
|
-
generateCodeVerifier() {
|
|
36
|
-
try {
|
|
37
|
-
// Generate random values as utf-8
|
|
38
|
-
const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);
|
|
39
|
-
this.cryptoObj.getRandomValues(buffer);
|
|
40
|
-
// encode verifier as base64
|
|
41
|
-
const pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);
|
|
42
|
-
return pkceCodeVerifierB64;
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
throw BrowserAuthError.createPkceNotGeneratedError(e);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Creates a base64 encoded PKCE Code Challenge string from the
|
|
50
|
-
* hash created from the PKCE Code Verifier supplied
|
|
51
|
-
*/
|
|
52
|
-
async generateCodeChallengeFromVerifier(pkceCodeVerifier) {
|
|
53
|
-
try {
|
|
54
|
-
// hashed verifier
|
|
55
|
-
const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);
|
|
56
|
-
// encode hash as base64
|
|
57
|
-
return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
throw BrowserAuthError.createPkceNotGeneratedError(e);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
6
|
+
/*
|
|
7
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
+
* Licensed under the MIT License.
|
|
9
|
+
*/
|
|
10
|
+
// Constant byte array length
|
|
11
|
+
const RANDOM_BYTE_ARR_LENGTH = 32;
|
|
12
|
+
/**
|
|
13
|
+
* Class which exposes APIs to generate PKCE codes and code verifiers.
|
|
14
|
+
*/
|
|
15
|
+
class PkceGenerator {
|
|
16
|
+
constructor(cryptoObj) {
|
|
17
|
+
this.base64Encode = new Base64Encode();
|
|
18
|
+
this.cryptoObj = cryptoObj;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
|
|
22
|
+
*/
|
|
23
|
+
async generateCodes() {
|
|
24
|
+
const codeVerifier = this.generateCodeVerifier();
|
|
25
|
+
const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);
|
|
26
|
+
return {
|
|
27
|
+
verifier: codeVerifier,
|
|
28
|
+
challenge: codeChallenge,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generates a random 32 byte buffer and returns the base64
|
|
33
|
+
* encoded string to be used as a PKCE Code Verifier
|
|
34
|
+
*/
|
|
35
|
+
generateCodeVerifier() {
|
|
36
|
+
try {
|
|
37
|
+
// Generate random values as utf-8
|
|
38
|
+
const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);
|
|
39
|
+
this.cryptoObj.getRandomValues(buffer);
|
|
40
|
+
// encode verifier as base64
|
|
41
|
+
const pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);
|
|
42
|
+
return pkceCodeVerifierB64;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
throw BrowserAuthError.createPkceNotGeneratedError(e);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a base64 encoded PKCE Code Challenge string from the
|
|
50
|
+
* hash created from the PKCE Code Verifier supplied
|
|
51
|
+
*/
|
|
52
|
+
async generateCodeChallengeFromVerifier(pkceCodeVerifier) {
|
|
53
|
+
try {
|
|
54
|
+
// hashed verifier
|
|
55
|
+
const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);
|
|
56
|
+
// encode hash as base64
|
|
57
|
+
return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
throw BrowserAuthError.createPkceNotGeneratedError(e);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export { PkceGenerator };
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common";
|
|
2
|
-
export type SignedHttpRequestOptions = {
|
|
3
|
-
loggerOptions: LoggerOptions;
|
|
4
|
-
};
|
|
5
|
-
export declare class SignedHttpRequest {
|
|
6
|
-
private popTokenGenerator;
|
|
7
|
-
private cryptoOps;
|
|
8
|
-
private shrParameters;
|
|
9
|
-
private logger;
|
|
10
|
-
constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions);
|
|
11
|
-
/**
|
|
12
|
-
* Generates and caches a keypair for the given request options.
|
|
13
|
-
* @returns Public key digest, which should be sent to the token issuer.
|
|
14
|
-
*/
|
|
15
|
-
generatePublicKeyThumbprint(): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Generates a signed http request for the given payload with the given key.
|
|
18
|
-
* @param payload Payload to sign (e.g. access token)
|
|
19
|
-
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
20
|
-
* @param claims Additional claims to include/override in the signed JWT
|
|
21
|
-
* @returns Pop token signed with the corresponding private key
|
|
22
|
-
*/
|
|
23
|
-
signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string>;
|
|
24
|
-
/**
|
|
25
|
-
* Removes cached keys from browser for given public key thumbprint
|
|
26
|
-
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
27
|
-
* @returns If keys are properly deleted
|
|
28
|
-
*/
|
|
29
|
-
removeKeys(publicKeyThumbprint: string): Promise<boolean>;
|
|
30
|
-
}
|
|
1
|
+
import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common";
|
|
2
|
+
export type SignedHttpRequestOptions = {
|
|
3
|
+
loggerOptions: LoggerOptions;
|
|
4
|
+
};
|
|
5
|
+
export declare class SignedHttpRequest {
|
|
6
|
+
private popTokenGenerator;
|
|
7
|
+
private cryptoOps;
|
|
8
|
+
private shrParameters;
|
|
9
|
+
private logger;
|
|
10
|
+
constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions);
|
|
11
|
+
/**
|
|
12
|
+
* Generates and caches a keypair for the given request options.
|
|
13
|
+
* @returns Public key digest, which should be sent to the token issuer.
|
|
14
|
+
*/
|
|
15
|
+
generatePublicKeyThumbprint(): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Generates a signed http request for the given payload with the given key.
|
|
18
|
+
* @param payload Payload to sign (e.g. access token)
|
|
19
|
+
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
20
|
+
* @param claims Additional claims to include/override in the signed JWT
|
|
21
|
+
* @returns Pop token signed with the corresponding private key
|
|
22
|
+
*/
|
|
23
|
+
signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Removes cached keys from browser for given public key thumbprint
|
|
26
|
+
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
27
|
+
* @returns If keys are properly deleted
|
|
28
|
+
*/
|
|
29
|
+
removeKeys(publicKeyThumbprint: string): Promise<boolean>;
|
|
30
|
+
}
|
|
31
31
|
//# sourceMappingURL=SignedHttpRequest.d.ts.map
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { CryptoOps } from './CryptoOps.js';
|
|
4
4
|
import { Logger, PopTokenGenerator } from '@azure/msal-common';
|
|
5
5
|
import { name, version } from '../packageMetadata.js';
|
|
6
6
|
|
|
7
|
-
/*
|
|
8
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
-
* Licensed under the MIT License.
|
|
10
|
-
*/
|
|
11
|
-
class SignedHttpRequest {
|
|
12
|
-
constructor(shrParameters, shrOptions) {
|
|
13
|
-
const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};
|
|
14
|
-
this.logger = new Logger(loggerOptions, name, version);
|
|
15
|
-
this.cryptoOps = new CryptoOps(this.logger);
|
|
16
|
-
this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);
|
|
17
|
-
this.shrParameters = shrParameters;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Generates and caches a keypair for the given request options.
|
|
21
|
-
* @returns Public key digest, which should be sent to the token issuer.
|
|
22
|
-
*/
|
|
23
|
-
async generatePublicKeyThumbprint() {
|
|
24
|
-
const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);
|
|
25
|
-
return kid;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Generates a signed http request for the given payload with the given key.
|
|
29
|
-
* @param payload Payload to sign (e.g. access token)
|
|
30
|
-
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
31
|
-
* @param claims Additional claims to include/override in the signed JWT
|
|
32
|
-
* @returns Pop token signed with the corresponding private key
|
|
33
|
-
*/
|
|
34
|
-
async signRequest(payload, publicKeyThumbprint, claims) {
|
|
35
|
-
return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Removes cached keys from browser for given public key thumbprint
|
|
39
|
-
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
40
|
-
* @returns If keys are properly deleted
|
|
41
|
-
*/
|
|
42
|
-
async removeKeys(publicKeyThumbprint) {
|
|
43
|
-
return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
|
|
44
|
-
}
|
|
7
|
+
/*
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License.
|
|
10
|
+
*/
|
|
11
|
+
class SignedHttpRequest {
|
|
12
|
+
constructor(shrParameters, shrOptions) {
|
|
13
|
+
const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};
|
|
14
|
+
this.logger = new Logger(loggerOptions, name, version);
|
|
15
|
+
this.cryptoOps = new CryptoOps(this.logger);
|
|
16
|
+
this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);
|
|
17
|
+
this.shrParameters = shrParameters;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generates and caches a keypair for the given request options.
|
|
21
|
+
* @returns Public key digest, which should be sent to the token issuer.
|
|
22
|
+
*/
|
|
23
|
+
async generatePublicKeyThumbprint() {
|
|
24
|
+
const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);
|
|
25
|
+
return kid;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generates a signed http request for the given payload with the given key.
|
|
29
|
+
* @param payload Payload to sign (e.g. access token)
|
|
30
|
+
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
31
|
+
* @param claims Additional claims to include/override in the signed JWT
|
|
32
|
+
* @returns Pop token signed with the corresponding private key
|
|
33
|
+
*/
|
|
34
|
+
async signRequest(payload, publicKeyThumbprint, claims) {
|
|
35
|
+
return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Removes cached keys from browser for given public key thumbprint
|
|
39
|
+
* @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
|
|
40
|
+
* @returns If keys are properly deleted
|
|
41
|
+
*/
|
|
42
|
+
async removeKeys(publicKeyThumbprint) {
|
|
43
|
+
return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
|
|
44
|
+
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
export { SignedHttpRequest };
|