@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,74 +1,73 @@
|
|
|
1
|
-
import { ICrypto, IPerformanceClient, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
private static
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
*
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
*
|
|
64
|
-
* @param
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
1
|
+
import { ICrypto, IPerformanceClient, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
|
|
2
|
+
export type CachedKeyPair = {
|
|
3
|
+
publicKey: CryptoKey;
|
|
4
|
+
privateKey: CryptoKey;
|
|
5
|
+
requestMethod?: string;
|
|
6
|
+
requestUri?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and
|
|
10
|
+
* implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).
|
|
11
|
+
*/
|
|
12
|
+
export declare class CryptoOps implements ICrypto {
|
|
13
|
+
private browserCrypto;
|
|
14
|
+
private guidGenerator;
|
|
15
|
+
private b64Encode;
|
|
16
|
+
private b64Decode;
|
|
17
|
+
private pkceGenerator;
|
|
18
|
+
private logger;
|
|
19
|
+
/**
|
|
20
|
+
* CryptoOps can be used in contexts outside a PCA instance,
|
|
21
|
+
* meaning there won't be a performance manager available.
|
|
22
|
+
*/
|
|
23
|
+
private performanceClient;
|
|
24
|
+
private static POP_KEY_USAGES;
|
|
25
|
+
private static EXTRACTABLE;
|
|
26
|
+
private cache;
|
|
27
|
+
constructor(logger: Logger, performanceClient?: IPerformanceClient);
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new random GUID - used to populate state and nonce.
|
|
30
|
+
* @returns string (GUID)
|
|
31
|
+
*/
|
|
32
|
+
createNewGuid(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Encodes input string to base64.
|
|
35
|
+
* @param input
|
|
36
|
+
*/
|
|
37
|
+
base64Encode(input: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Decodes input string from base64.
|
|
40
|
+
* @param input
|
|
41
|
+
*/
|
|
42
|
+
base64Decode(input: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Generates PKCE codes used in Authorization Code Flow.
|
|
45
|
+
*/
|
|
46
|
+
generatePkceCodes(): Promise<PkceCodes>;
|
|
47
|
+
/**
|
|
48
|
+
* Generates a keypair, stores it and returns a thumbprint
|
|
49
|
+
* @param request
|
|
50
|
+
*/
|
|
51
|
+
getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Removes cryptographic keypair from key store matching the keyId passed in
|
|
54
|
+
* @param kid
|
|
55
|
+
*/
|
|
56
|
+
removeTokenBindingKey(kid: string): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Removes all cryptographic keys from IndexedDB storage
|
|
59
|
+
*/
|
|
60
|
+
clearKeystore(): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Signs the given object as a jwt payload with private key retrieved by given kid.
|
|
63
|
+
* @param payload
|
|
64
|
+
* @param kid
|
|
65
|
+
*/
|
|
66
|
+
signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the SHA-256 hash of an input string
|
|
69
|
+
* @param plainText
|
|
70
|
+
*/
|
|
71
|
+
hashString(plainText: string): Promise<string>;
|
|
72
|
+
}
|
|
74
73
|
//# sourceMappingURL=CryptoOps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,SAAS,EACT,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,SAAS,EACT,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,oBAAoB,CAAC;AAU5B,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAiB;gBAG1B,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB;IAa1C;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAI7C;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA8DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOvD"}
|
package/dist/crypto/CryptoOps.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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 { PerformanceEvents, JoseHeader } from '@azure/msal-common';
|
|
4
4
|
import { GuidGenerator } from './GuidGenerator.js';
|
|
@@ -10,155 +10,155 @@ import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
|
|
|
10
10
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
11
11
|
import { CryptoKeyStore } from '../cache/CryptoKeyStore.js';
|
|
12
12
|
|
|
13
|
-
/*
|
|
14
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
15
|
-
* Licensed under the MIT License.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and
|
|
19
|
-
* implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).
|
|
20
|
-
*/
|
|
21
|
-
class CryptoOps {
|
|
22
|
-
constructor(logger, performanceClient
|
|
23
|
-
this.logger = logger;
|
|
24
|
-
// Browser crypto needs to be validated first before any other classes can be set.
|
|
25
|
-
this.browserCrypto = new BrowserCrypto(this.logger
|
|
26
|
-
this.b64Encode = new Base64Encode();
|
|
27
|
-
this.b64Decode = new Base64Decode();
|
|
28
|
-
this.guidGenerator = new GuidGenerator(this.browserCrypto);
|
|
29
|
-
this.pkceGenerator = new PkceGenerator(this.browserCrypto);
|
|
30
|
-
this.cache = new CryptoKeyStore(this.logger);
|
|
31
|
-
this.performanceClient = performanceClient;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Creates a new random GUID - used to populate state and nonce.
|
|
35
|
-
* @returns string (GUID)
|
|
36
|
-
*/
|
|
37
|
-
createNewGuid() {
|
|
38
|
-
return this.guidGenerator.generateGuid();
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Encodes input string to base64.
|
|
42
|
-
* @param input
|
|
43
|
-
*/
|
|
44
|
-
base64Encode(input) {
|
|
45
|
-
return this.b64Encode.encode(input);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Decodes input string from base64.
|
|
49
|
-
* @param input
|
|
50
|
-
*/
|
|
51
|
-
base64Decode(input) {
|
|
52
|
-
return this.b64Decode.decode(input);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Generates PKCE codes used in Authorization Code Flow.
|
|
56
|
-
*/
|
|
57
|
-
async generatePkceCodes() {
|
|
58
|
-
return this.pkceGenerator.generateCodes();
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Generates a keypair, stores it and returns a thumbprint
|
|
62
|
-
* @param request
|
|
63
|
-
*/
|
|
64
|
-
async getPublicKeyThumbprint(request) {
|
|
65
|
-
const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);
|
|
66
|
-
// Generate Keypair
|
|
67
|
-
const keyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);
|
|
68
|
-
// Generate Thumbprint for Public Key
|
|
69
|
-
const publicKeyJwk = await this.browserCrypto.exportJwk(keyPair.publicKey);
|
|
70
|
-
const pubKeyThumprintObj = {
|
|
71
|
-
e: publicKeyJwk.e,
|
|
72
|
-
kty: publicKeyJwk.kty,
|
|
73
|
-
n: publicKeyJwk.n,
|
|
74
|
-
};
|
|
75
|
-
const publicJwkString = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);
|
|
76
|
-
const publicJwkHash = await this.hashString(publicJwkString);
|
|
77
|
-
// Generate Thumbprint for Private Key
|
|
78
|
-
const privateKeyJwk = await this.browserCrypto.exportJwk(keyPair.privateKey);
|
|
79
|
-
// Re-import private key to make it unextractable
|
|
80
|
-
const unextractablePrivateKey = await this.browserCrypto.importJwk(privateKeyJwk, false, ["sign"]);
|
|
81
|
-
// Store Keypair data in keystore
|
|
82
|
-
await this.cache.asymmetricKeys.setItem(publicJwkHash, {
|
|
83
|
-
privateKey: unextractablePrivateKey,
|
|
84
|
-
publicKey: keyPair.publicKey,
|
|
85
|
-
requestMethod: request.resourceRequestMethod,
|
|
86
|
-
requestUri: request.resourceRequestUri,
|
|
87
|
-
});
|
|
88
|
-
if (publicKeyThumbMeasurement) {
|
|
89
|
-
publicKeyThumbMeasurement.endMeasurement({
|
|
90
|
-
success: true,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
return publicJwkHash;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Removes cryptographic keypair from key store matching the keyId passed in
|
|
97
|
-
* @param kid
|
|
98
|
-
*/
|
|
99
|
-
async removeTokenBindingKey(kid) {
|
|
100
|
-
await this.cache.asymmetricKeys.removeItem(kid);
|
|
101
|
-
const keyFound = await this.cache.asymmetricKeys.containsKey(kid);
|
|
102
|
-
return !keyFound;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Removes all cryptographic keys from IndexedDB storage
|
|
106
|
-
*/
|
|
107
|
-
async clearKeystore() {
|
|
108
|
-
return await this.cache.clear();
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Signs the given object as a jwt payload with private key retrieved by given kid.
|
|
112
|
-
* @param payload
|
|
113
|
-
* @param kid
|
|
114
|
-
*/
|
|
115
|
-
async signJwt(payload, kid, correlationId) {
|
|
116
|
-
const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);
|
|
117
|
-
const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);
|
|
118
|
-
if (!cachedKeyPair) {
|
|
119
|
-
throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);
|
|
120
|
-
}
|
|
121
|
-
// Get public key as JWK
|
|
122
|
-
const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);
|
|
123
|
-
const publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);
|
|
124
|
-
// Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" })
|
|
125
|
-
const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));
|
|
126
|
-
// Generate header
|
|
127
|
-
const shrHeader = JoseHeader.getShrHeaderString({
|
|
128
|
-
kid: encodedKeyIdThumbprint,
|
|
129
|
-
alg: publicKeyJwk.alg,
|
|
130
|
-
});
|
|
131
|
-
const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);
|
|
132
|
-
// Generate payload
|
|
133
|
-
payload.cnf = {
|
|
134
|
-
jwk: JSON.parse(publicKeyJwkString),
|
|
135
|
-
};
|
|
136
|
-
const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));
|
|
137
|
-
// Form token string
|
|
138
|
-
const tokenString = `${encodedShrHeader}.${encodedPayload}`;
|
|
139
|
-
// Sign token
|
|
140
|
-
const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);
|
|
141
|
-
const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);
|
|
142
|
-
const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));
|
|
143
|
-
const signedJwt = `${tokenString}.${encodedSignature}`;
|
|
144
|
-
if (signJwtMeasurement) {
|
|
145
|
-
signJwtMeasurement.endMeasurement({
|
|
146
|
-
success: true,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
return signedJwt;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Returns the SHA-256 hash of an input string
|
|
153
|
-
* @param plainText
|
|
154
|
-
*/
|
|
155
|
-
async hashString(plainText) {
|
|
156
|
-
const hashBuffer = await this.browserCrypto.sha256Digest(plainText);
|
|
157
|
-
const hashBytes = new Uint8Array(hashBuffer);
|
|
158
|
-
return this.b64Encode.urlEncodeArr(hashBytes);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
CryptoOps.POP_KEY_USAGES = ["sign", "verify"];
|
|
13
|
+
/*
|
|
14
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
15
|
+
* Licensed under the MIT License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and
|
|
19
|
+
* implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).
|
|
20
|
+
*/
|
|
21
|
+
class CryptoOps {
|
|
22
|
+
constructor(logger, performanceClient) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
// Browser crypto needs to be validated first before any other classes can be set.
|
|
25
|
+
this.browserCrypto = new BrowserCrypto(this.logger);
|
|
26
|
+
this.b64Encode = new Base64Encode();
|
|
27
|
+
this.b64Decode = new Base64Decode();
|
|
28
|
+
this.guidGenerator = new GuidGenerator(this.browserCrypto);
|
|
29
|
+
this.pkceGenerator = new PkceGenerator(this.browserCrypto);
|
|
30
|
+
this.cache = new CryptoKeyStore(this.logger);
|
|
31
|
+
this.performanceClient = performanceClient;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new random GUID - used to populate state and nonce.
|
|
35
|
+
* @returns string (GUID)
|
|
36
|
+
*/
|
|
37
|
+
createNewGuid() {
|
|
38
|
+
return this.guidGenerator.generateGuid();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Encodes input string to base64.
|
|
42
|
+
* @param input
|
|
43
|
+
*/
|
|
44
|
+
base64Encode(input) {
|
|
45
|
+
return this.b64Encode.encode(input);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Decodes input string from base64.
|
|
49
|
+
* @param input
|
|
50
|
+
*/
|
|
51
|
+
base64Decode(input) {
|
|
52
|
+
return this.b64Decode.decode(input);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generates PKCE codes used in Authorization Code Flow.
|
|
56
|
+
*/
|
|
57
|
+
async generatePkceCodes() {
|
|
58
|
+
return this.pkceGenerator.generateCodes();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generates a keypair, stores it and returns a thumbprint
|
|
62
|
+
* @param request
|
|
63
|
+
*/
|
|
64
|
+
async getPublicKeyThumbprint(request) {
|
|
65
|
+
const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);
|
|
66
|
+
// Generate Keypair
|
|
67
|
+
const keyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);
|
|
68
|
+
// Generate Thumbprint for Public Key
|
|
69
|
+
const publicKeyJwk = await this.browserCrypto.exportJwk(keyPair.publicKey);
|
|
70
|
+
const pubKeyThumprintObj = {
|
|
71
|
+
e: publicKeyJwk.e,
|
|
72
|
+
kty: publicKeyJwk.kty,
|
|
73
|
+
n: publicKeyJwk.n,
|
|
74
|
+
};
|
|
75
|
+
const publicJwkString = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);
|
|
76
|
+
const publicJwkHash = await this.hashString(publicJwkString);
|
|
77
|
+
// Generate Thumbprint for Private Key
|
|
78
|
+
const privateKeyJwk = await this.browserCrypto.exportJwk(keyPair.privateKey);
|
|
79
|
+
// Re-import private key to make it unextractable
|
|
80
|
+
const unextractablePrivateKey = await this.browserCrypto.importJwk(privateKeyJwk, false, ["sign"]);
|
|
81
|
+
// Store Keypair data in keystore
|
|
82
|
+
await this.cache.asymmetricKeys.setItem(publicJwkHash, {
|
|
83
|
+
privateKey: unextractablePrivateKey,
|
|
84
|
+
publicKey: keyPair.publicKey,
|
|
85
|
+
requestMethod: request.resourceRequestMethod,
|
|
86
|
+
requestUri: request.resourceRequestUri,
|
|
87
|
+
});
|
|
88
|
+
if (publicKeyThumbMeasurement) {
|
|
89
|
+
publicKeyThumbMeasurement.endMeasurement({
|
|
90
|
+
success: true,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return publicJwkHash;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Removes cryptographic keypair from key store matching the keyId passed in
|
|
97
|
+
* @param kid
|
|
98
|
+
*/
|
|
99
|
+
async removeTokenBindingKey(kid) {
|
|
100
|
+
await this.cache.asymmetricKeys.removeItem(kid);
|
|
101
|
+
const keyFound = await this.cache.asymmetricKeys.containsKey(kid);
|
|
102
|
+
return !keyFound;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Removes all cryptographic keys from IndexedDB storage
|
|
106
|
+
*/
|
|
107
|
+
async clearKeystore() {
|
|
108
|
+
return await this.cache.clear();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Signs the given object as a jwt payload with private key retrieved by given kid.
|
|
112
|
+
* @param payload
|
|
113
|
+
* @param kid
|
|
114
|
+
*/
|
|
115
|
+
async signJwt(payload, kid, correlationId) {
|
|
116
|
+
const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);
|
|
117
|
+
const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);
|
|
118
|
+
if (!cachedKeyPair) {
|
|
119
|
+
throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);
|
|
120
|
+
}
|
|
121
|
+
// Get public key as JWK
|
|
122
|
+
const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);
|
|
123
|
+
const publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);
|
|
124
|
+
// Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" })
|
|
125
|
+
const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));
|
|
126
|
+
// Generate header
|
|
127
|
+
const shrHeader = JoseHeader.getShrHeaderString({
|
|
128
|
+
kid: encodedKeyIdThumbprint,
|
|
129
|
+
alg: publicKeyJwk.alg,
|
|
130
|
+
});
|
|
131
|
+
const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);
|
|
132
|
+
// Generate payload
|
|
133
|
+
payload.cnf = {
|
|
134
|
+
jwk: JSON.parse(publicKeyJwkString),
|
|
135
|
+
};
|
|
136
|
+
const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));
|
|
137
|
+
// Form token string
|
|
138
|
+
const tokenString = `${encodedShrHeader}.${encodedPayload}`;
|
|
139
|
+
// Sign token
|
|
140
|
+
const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);
|
|
141
|
+
const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);
|
|
142
|
+
const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));
|
|
143
|
+
const signedJwt = `${tokenString}.${encodedSignature}`;
|
|
144
|
+
if (signJwtMeasurement) {
|
|
145
|
+
signJwtMeasurement.endMeasurement({
|
|
146
|
+
success: true,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return signedJwt;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Returns the SHA-256 hash of an input string
|
|
153
|
+
* @param plainText
|
|
154
|
+
*/
|
|
155
|
+
async hashString(plainText) {
|
|
156
|
+
const hashBuffer = await this.browserCrypto.sha256Digest(plainText);
|
|
157
|
+
const hashBytes = new Uint8Array(hashBuffer);
|
|
158
|
+
return this.b64Encode.urlEncodeArr(hashBytes);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
CryptoOps.POP_KEY_USAGES = ["sign", "verify"];
|
|
162
162
|
CryptoOps.EXTRACTABLE = true;
|
|
163
163
|
|
|
164
164
|
export { CryptoOps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoOps.js","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;AAGG;
|
|
1
|
+
{"version":3,"file":"CryptoOps.js","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { IGuidGenerator } from "@azure/msal-common";
|
|
2
|
-
import { BrowserCrypto } from "./BrowserCrypto";
|
|
3
|
-
export declare class GuidGenerator implements IGuidGenerator {
|
|
4
|
-
private cryptoObj;
|
|
5
|
-
constructor(cryptoObj: BrowserCrypto);
|
|
6
|
-
generateGuid(): string;
|
|
7
|
-
/**
|
|
8
|
-
* verifies if a string is GUID
|
|
9
|
-
* @param guid
|
|
10
|
-
*/
|
|
11
|
-
isGuid(guid: string): boolean;
|
|
12
|
-
}
|
|
1
|
+
import { IGuidGenerator } from "@azure/msal-common";
|
|
2
|
+
import { BrowserCrypto } from "./BrowserCrypto";
|
|
3
|
+
export declare class GuidGenerator implements IGuidGenerator {
|
|
4
|
+
private cryptoObj;
|
|
5
|
+
constructor(cryptoObj: BrowserCrypto);
|
|
6
|
+
generateGuid(): string;
|
|
7
|
+
/**
|
|
8
|
+
* verifies if a string is GUID
|
|
9
|
+
* @param guid
|
|
10
|
+
*/
|
|
11
|
+
isGuid(guid: string): boolean;
|
|
12
|
+
}
|
|
13
13
|
//# sourceMappingURL=GuidGenerator.d.ts.map
|