@azure/msal-common 14.0.2 → 14.0.3
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/dist/account/AuthToken.d.ts +14 -17
- package/dist/account/AuthToken.d.ts.map +1 -1
- package/dist/account/AuthToken.mjs +48 -39
- package/dist/account/AuthToken.mjs.map +1 -1
- package/dist/account/CcsCredential.mjs +1 -1
- package/dist/account/CcsCredential.mjs.map +1 -1
- package/dist/account/ClientInfo.d.ts.map +1 -1
- package/dist/account/ClientInfo.mjs +3 -4
- package/dist/account/ClientInfo.mjs.map +1 -1
- package/dist/authority/Authority.mjs +1 -1
- package/dist/authority/Authority.mjs.map +1 -1
- package/dist/authority/AuthorityFactory.d.ts.map +1 -1
- package/dist/authority/AuthorityFactory.mjs +2 -3
- package/dist/authority/AuthorityFactory.mjs.map +1 -1
- package/dist/authority/AuthorityMetadata.mjs +1 -1
- package/dist/authority/AuthorityMetadata.mjs.map +1 -1
- package/dist/authority/AuthorityOptions.mjs +1 -1
- package/dist/authority/AuthorityOptions.mjs.map +1 -1
- package/dist/authority/AuthorityType.mjs +1 -1
- package/dist/authority/AuthorityType.mjs.map +1 -1
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +1 -1
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +1 -1
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs +1 -1
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +1 -1
- package/dist/authority/OpenIdConfigResponse.mjs +1 -1
- package/dist/authority/OpenIdConfigResponse.mjs.map +1 -1
- package/dist/authority/ProtocolMode.mjs +1 -1
- package/dist/authority/ProtocolMode.mjs.map +1 -1
- package/dist/authority/RegionDiscovery.mjs +1 -1
- package/dist/authority/RegionDiscovery.mjs.map +1 -1
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.mjs +5 -5
- package/dist/cache/CacheManager.mjs.map +1 -1
- package/dist/cache/entities/AccessTokenEntity.d.ts.map +1 -1
- package/dist/cache/entities/AccessTokenEntity.mjs +4 -7
- package/dist/cache/entities/AccessTokenEntity.mjs.map +1 -1
- package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
- package/dist/cache/entities/AccountEntity.mjs +2 -4
- package/dist/cache/entities/AccountEntity.mjs.map +1 -1
- package/dist/cache/entities/AppMetadataEntity.mjs +1 -1
- package/dist/cache/entities/AppMetadataEntity.mjs.map +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.mjs +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.mjs.map +1 -1
- package/dist/cache/entities/CacheRecord.mjs +1 -1
- package/dist/cache/entities/CacheRecord.mjs.map +1 -1
- package/dist/cache/entities/CredentialEntity.mjs +1 -1
- package/dist/cache/entities/CredentialEntity.mjs.map +1 -1
- package/dist/cache/entities/IdTokenEntity.mjs +1 -1
- package/dist/cache/entities/IdTokenEntity.mjs.map +1 -1
- package/dist/cache/entities/RefreshTokenEntity.mjs +1 -1
- package/dist/cache/entities/RefreshTokenEntity.mjs.map +1 -1
- package/dist/cache/entities/ServerTelemetryEntity.mjs +1 -1
- package/dist/cache/entities/ServerTelemetryEntity.mjs.map +1 -1
- package/dist/cache/entities/ThrottlingEntity.mjs +1 -1
- package/dist/cache/entities/ThrottlingEntity.mjs.map +1 -1
- package/dist/cache/persistence/TokenCacheContext.mjs +1 -1
- package/dist/cache/persistence/TokenCacheContext.mjs.map +1 -1
- package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.mjs +10 -39
- package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
- package/dist/client/BaseClient.d.ts +1 -1
- package/dist/client/BaseClient.d.ts.map +1 -1
- package/dist/client/BaseClient.mjs +8 -2
- package/dist/client/BaseClient.mjs.map +1 -1
- package/dist/client/RefreshTokenClient.d.ts.map +1 -1
- package/dist/client/RefreshTokenClient.mjs +2 -11
- package/dist/client/RefreshTokenClient.mjs.map +1 -1
- package/dist/client/SilentFlowClient.d.ts.map +1 -1
- package/dist/client/SilentFlowClient.mjs +7 -7
- package/dist/client/SilentFlowClient.mjs.map +1 -1
- package/dist/config/ClientConfiguration.mjs +1 -1
- package/dist/config/ClientConfiguration.mjs.map +1 -1
- package/dist/crypto/ICrypto.mjs +1 -1
- package/dist/crypto/ICrypto.mjs.map +1 -1
- package/dist/crypto/JoseHeader.mjs +1 -1
- package/dist/crypto/JoseHeader.mjs.map +1 -1
- package/dist/crypto/PopTokenGenerator.mjs +1 -1
- package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
- package/dist/error/AuthError.mjs +1 -1
- package/dist/error/AuthError.mjs.map +1 -1
- package/dist/error/ClientAuthError.mjs +1 -1
- package/dist/error/ClientAuthError.mjs.map +1 -1
- package/dist/error/ClientConfigurationError.mjs +1 -1
- package/dist/error/ClientConfigurationError.mjs.map +1 -1
- package/dist/error/InteractionRequiredAuthError.mjs +1 -1
- package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
- package/dist/error/JoseHeaderError.mjs +1 -1
- package/dist/error/JoseHeaderError.mjs.map +1 -1
- package/dist/error/ServerError.mjs +1 -1
- package/dist/error/ServerError.mjs.map +1 -1
- package/dist/index.cjs +1641 -1560
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +5 -3
- package/dist/index.mjs.map +1 -1
- package/dist/logger/Logger.d.ts.map +1 -1
- package/dist/logger/Logger.mjs +2 -12
- package/dist/logger/Logger.mjs.map +1 -1
- package/dist/network/INetworkModule.mjs +1 -1
- package/dist/network/INetworkModule.mjs.map +1 -1
- package/dist/network/NetworkManager.mjs +1 -1
- package/dist/network/NetworkManager.mjs.map +1 -1
- package/dist/network/ThrottlingUtils.mjs +1 -1
- package/dist/network/ThrottlingUtils.mjs.map +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.mjs +2 -2
- package/dist/packageMetadata.mjs.map +1 -1
- package/dist/request/AuthenticationHeaderParser.mjs +1 -1
- package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
- package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
- package/dist/request/RequestParameterBuilder.mjs +6 -7
- package/dist/request/RequestParameterBuilder.mjs.map +1 -1
- package/dist/request/RequestValidator.d.ts.map +1 -1
- package/dist/request/RequestValidator.mjs +4 -6
- package/dist/request/RequestValidator.mjs.map +1 -1
- package/dist/request/ScopeSet.mjs +4 -4
- package/dist/request/ScopeSet.mjs.map +1 -1
- package/dist/response/AuthenticationResult.d.ts +3 -1
- package/dist/response/AuthenticationResult.d.ts.map +1 -1
- package/dist/response/ResponseHandler.d.ts +4 -3
- package/dist/response/ResponseHandler.d.ts.map +1 -1
- package/dist/response/ResponseHandler.mjs +57 -39
- package/dist/response/ResponseHandler.mjs.map +1 -1
- package/dist/response/ServerAuthorizationTokenResponse.d.ts +2 -0
- package/dist/response/ServerAuthorizationTokenResponse.d.ts.map +1 -1
- package/dist/telemetry/performance/IPerformanceClient.d.ts +4 -4
- package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/performance/PerformanceClient.d.ts +2 -2
- package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/performance/PerformanceClient.mjs +1 -1
- package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
- package/dist/telemetry/performance/PerformanceEvent.d.ts +8 -1
- package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
- package/dist/telemetry/performance/PerformanceEvent.mjs +9 -1
- package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
- package/dist/telemetry/performance/StubPerformanceClient.d.ts +3 -3
- package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/performance/StubPerformanceClient.mjs +23 -3
- package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
- package/dist/telemetry/server/ServerTelemetryManager.d.ts.map +1 -1
- package/dist/telemetry/server/ServerTelemetryManager.mjs +3 -4
- package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
- package/dist/url/UrlString.d.ts.map +1 -1
- package/dist/url/UrlString.mjs +10 -12
- package/dist/url/UrlString.mjs.map +1 -1
- package/dist/utils/Constants.d.ts +10 -0
- package/dist/utils/Constants.d.ts.map +1 -1
- package/dist/utils/Constants.mjs +11 -2
- package/dist/utils/Constants.mjs.map +1 -1
- package/dist/utils/FunctionWrappers.d.ts +28 -0
- package/dist/utils/FunctionWrappers.d.ts.map +1 -0
- package/dist/utils/FunctionWrappers.mjs +90 -0
- package/dist/utils/FunctionWrappers.mjs.map +1 -0
- package/dist/utils/ProtocolUtils.d.ts.map +1 -1
- package/dist/utils/ProtocolUtils.mjs +4 -7
- package/dist/utils/ProtocolUtils.mjs.map +1 -1
- package/dist/utils/StringUtils.d.ts +0 -13
- package/dist/utils/StringUtils.d.ts.map +1 -1
- package/dist/utils/StringUtils.mjs +3 -34
- package/dist/utils/StringUtils.mjs.map +1 -1
- package/dist/utils/TimeUtils.mjs +1 -1
- package/dist/utils/TimeUtils.mjs.map +1 -1
- package/package.json +6 -4
- package/src/account/AccountInfo.ts +44 -0
- package/src/account/AuthToken.ts +70 -0
- package/src/account/CcsCredential.ts +16 -0
- package/src/account/ClientCredentials.ts +20 -0
- package/src/account/ClientInfo.ts +64 -0
- package/src/account/TokenClaims.ts +70 -0
- package/src/authority/Authority.ts +1225 -0
- package/src/authority/AuthorityFactory.ts +106 -0
- package/src/authority/AuthorityMetadata.ts +953 -0
- package/src/authority/AuthorityOptions.ts +40 -0
- package/src/authority/AuthorityType.ts +15 -0
- package/src/authority/AzureRegion.ts +7 -0
- package/src/authority/AzureRegionConfiguration.ts +16 -0
- package/src/authority/CloudDiscoveryMetadata.ts +10 -0
- package/src/authority/CloudInstanceDiscoveryErrorResponse.ts +26 -0
- package/src/authority/CloudInstanceDiscoveryResponse.ts +21 -0
- package/src/authority/ImdsOptions.ts +10 -0
- package/src/authority/OIDCOptions.ts +14 -0
- package/src/authority/OpenIdConfigResponse.ts +24 -0
- package/src/authority/ProtocolMode.ts +13 -0
- package/src/authority/RegionDiscovery.ts +193 -0
- package/src/authority/RegionDiscoveryMetadata.ts +15 -0
- package/src/broker/nativeBroker/INativeBrokerPlugin.ts +29 -0
- package/src/cache/CacheManager.ts +1619 -0
- package/src/cache/entities/AccessTokenEntity.ts +162 -0
- package/src/cache/entities/AccountEntity.ts +309 -0
- package/src/cache/entities/AppMetadataEntity.ts +91 -0
- package/src/cache/entities/AuthorityMetadataEntity.ts +112 -0
- package/src/cache/entities/CacheRecord.ts +33 -0
- package/src/cache/entities/CredentialEntity.ts +215 -0
- package/src/cache/entities/IdTokenEntity.ts +74 -0
- package/src/cache/entities/RefreshTokenEntity.ts +78 -0
- package/src/cache/entities/ServerTelemetryEntity.ts +38 -0
- package/src/cache/entities/ThrottlingEntity.ts +36 -0
- package/src/cache/interface/ICacheManager.ts +218 -0
- package/src/cache/interface/ICachePlugin.ts +11 -0
- package/src/cache/interface/ISerializableTokenCache.ts +9 -0
- package/src/cache/persistence/TokenCacheContext.ts +39 -0
- package/src/cache/utils/CacheTypes.ts +93 -0
- package/src/client/AuthorizationCodeClient.ts +714 -0
- package/src/client/BaseClient.ts +205 -0
- package/src/client/RefreshTokenClient.ts +442 -0
- package/src/client/SilentFlowClient.ts +186 -0
- package/src/config/AppTokenProvider.ts +47 -0
- package/src/config/ClientConfiguration.ts +287 -0
- package/src/crypto/ICrypto.ts +127 -0
- package/src/crypto/IGuidGenerator.ts +9 -0
- package/src/crypto/JoseHeader.ts +55 -0
- package/src/crypto/PopTokenGenerator.ts +155 -0
- package/src/crypto/SignedHttpRequest.ts +16 -0
- package/src/error/AuthError.ts +85 -0
- package/src/error/ClientAuthError.ts +738 -0
- package/src/error/ClientConfigurationError.ts +396 -0
- package/src/error/InteractionRequiredAuthError.ts +134 -0
- package/src/error/JoseHeaderError.ts +52 -0
- package/src/error/ServerError.ts +18 -0
- package/src/index.ts +215 -0
- package/src/logger/Logger.ts +272 -0
- package/src/network/INetworkModule.ts +57 -0
- package/src/network/NetworkManager.ts +76 -0
- package/src/network/RequestThumbprint.ts +22 -0
- package/src/network/ThrottlingUtils.ts +156 -0
- package/src/packageMetadata.ts +3 -0
- package/src/request/AuthenticationHeaderParser.ts +89 -0
- package/src/request/BaseAuthRequest.ts +46 -0
- package/src/request/CommonAuthorizationCodeRequest.ts +33 -0
- package/src/request/CommonAuthorizationUrlRequest.ts +56 -0
- package/src/request/CommonClientCredentialRequest.ts +23 -0
- package/src/request/CommonDeviceCodeRequest.ts +31 -0
- package/src/request/CommonEndSessionRequest.ts +27 -0
- package/src/request/CommonOnBehalfOfRequest.ts +19 -0
- package/src/request/CommonRefreshTokenRequest.ts +25 -0
- package/src/request/CommonSilentFlowRequest.ts +24 -0
- package/src/request/CommonUsernamePasswordRequest.ts +23 -0
- package/src/request/NativeRequest.ts +25 -0
- package/src/request/NativeSignOutRequest.ts +10 -0
- package/src/request/RequestParameterBuilder.ts +606 -0
- package/src/request/RequestValidator.ts +103 -0
- package/src/request/ScopeSet.ts +230 -0
- package/src/request/StoreInCache.ts +16 -0
- package/src/response/AuthenticationResult.ts +47 -0
- package/src/response/AuthorizationCodePayload.ts +18 -0
- package/src/response/DeviceCodeResponse.ts +31 -0
- package/src/response/ExternalTokenResponse.ts +24 -0
- package/src/response/IMDSBadResponse.ts +9 -0
- package/src/response/ResponseHandler.ts +614 -0
- package/src/response/ServerAuthorizationCodeResponse.ts +33 -0
- package/src/response/ServerAuthorizationTokenResponse.ts +54 -0
- package/src/telemetry/performance/IPerformanceClient.ts +71 -0
- package/src/telemetry/performance/IPerformanceMeasurement.ts +10 -0
- package/src/telemetry/performance/PerformanceClient.ts +635 -0
- package/src/telemetry/performance/PerformanceEvent.ts +542 -0
- package/src/telemetry/performance/StubPerformanceClient.ts +101 -0
- package/src/telemetry/server/ServerTelemetryManager.ts +274 -0
- package/src/telemetry/server/ServerTelemetryRequest.ts +13 -0
- package/src/url/IUri.ts +17 -0
- package/src/url/UrlString.ts +363 -0
- package/src/utils/Constants.ts +436 -0
- package/src/utils/FunctionWrappers.ts +105 -0
- package/src/utils/MsalTypes.ts +9 -0
- package/src/utils/ProtocolUtils.ts +124 -0
- package/src/utils/StringUtils.ts +106 -0
- package/src/utils/TimeUtils.ts +51 -0
- package/dist/account/DecodedAuthToken.d.ts +0 -9
- package/dist/account/DecodedAuthToken.d.ts.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { JoseHeaderError } from "../error/JoseHeaderError";
|
|
7
|
+
import { JsonTypes } from "../utils/Constants";
|
|
8
|
+
|
|
9
|
+
export type JoseHeaderOptions = {
|
|
10
|
+
typ?: JsonTypes;
|
|
11
|
+
alg?: string;
|
|
12
|
+
kid?: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/** @internal */
|
|
16
|
+
export class JoseHeader {
|
|
17
|
+
public typ?: JsonTypes;
|
|
18
|
+
public alg?: string;
|
|
19
|
+
public kid?: string;
|
|
20
|
+
|
|
21
|
+
constructor(options: JoseHeaderOptions) {
|
|
22
|
+
this.typ = options.typ;
|
|
23
|
+
this.alg = options.alg;
|
|
24
|
+
this.kid = options.kid;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Builds SignedHttpRequest formatted JOSE Header from the
|
|
29
|
+
* JOSE Header options provided or previously set on the object and returns
|
|
30
|
+
* the stringified header object.
|
|
31
|
+
* Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.
|
|
32
|
+
* @param shrHeaderOptions
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {
|
|
36
|
+
// KeyID is required on the SHR header
|
|
37
|
+
if (!shrHeaderOptions.kid) {
|
|
38
|
+
throw JoseHeaderError.createMissingKidError();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Alg is required on the SHR header
|
|
42
|
+
if (!shrHeaderOptions.alg) {
|
|
43
|
+
throw JoseHeaderError.createMissingAlgError();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const shrHeader = new JoseHeader({
|
|
47
|
+
// Access Token PoP headers must have type pop, but the type header can be overriden for special cases
|
|
48
|
+
typ: shrHeaderOptions.typ || JsonTypes.Pop,
|
|
49
|
+
kid: shrHeaderOptions.kid,
|
|
50
|
+
alg: shrHeaderOptions.alg,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
return JSON.stringify(shrHeader);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ICrypto, SignedHttpRequestParameters } from "./ICrypto";
|
|
7
|
+
import { TimeUtils } from "../utils/TimeUtils";
|
|
8
|
+
import { UrlString } from "../url/UrlString";
|
|
9
|
+
import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient";
|
|
10
|
+
import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* See eSTS docs for more info.
|
|
14
|
+
* - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.
|
|
15
|
+
* - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:
|
|
16
|
+
* - sw: software storage
|
|
17
|
+
* - uhw: hardware storage
|
|
18
|
+
*/
|
|
19
|
+
type ReqCnf = {
|
|
20
|
+
kid: string;
|
|
21
|
+
xms_ksl: KeyLocation;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type ReqCnfData = {
|
|
25
|
+
kid: string;
|
|
26
|
+
reqCnfString: string;
|
|
27
|
+
reqCnfHash: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const KeyLocation = {
|
|
31
|
+
SW: "sw",
|
|
32
|
+
UHW: "uhw",
|
|
33
|
+
} as const;
|
|
34
|
+
export type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation];
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
37
|
+
export class PopTokenGenerator {
|
|
38
|
+
private cryptoUtils: ICrypto;
|
|
39
|
+
private performanceClient?: IPerformanceClient;
|
|
40
|
+
|
|
41
|
+
constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {
|
|
42
|
+
this.cryptoUtils = cryptoUtils;
|
|
43
|
+
this.performanceClient = performanceClient;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Generates the req_cnf validated at the RP in the POP protocol for SHR parameters
|
|
48
|
+
* and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash
|
|
49
|
+
* @param request
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
async generateCnf(
|
|
53
|
+
request: SignedHttpRequestParameters
|
|
54
|
+
): Promise<ReqCnfData> {
|
|
55
|
+
this.performanceClient?.addQueueMeasurement(
|
|
56
|
+
PerformanceEvents.PopTokenGenerateCnf,
|
|
57
|
+
request.correlationId
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
this.performanceClient?.setPreQueueTime(
|
|
61
|
+
PerformanceEvents.PopTokenGenerateKid,
|
|
62
|
+
request.correlationId
|
|
63
|
+
);
|
|
64
|
+
const reqCnf = await this.generateKid(request);
|
|
65
|
+
const reqCnfString: string = this.cryptoUtils.base64Encode(
|
|
66
|
+
JSON.stringify(reqCnf)
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
kid: reqCnf.kid,
|
|
71
|
+
reqCnfString,
|
|
72
|
+
reqCnfHash: await this.cryptoUtils.hashString(reqCnfString),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Generates key_id for a SHR token request
|
|
78
|
+
* @param request
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
async generateKid(request: SignedHttpRequestParameters): Promise<ReqCnf> {
|
|
82
|
+
this.performanceClient?.addQueueMeasurement(
|
|
83
|
+
PerformanceEvents.PopTokenGenerateKid,
|
|
84
|
+
request.correlationId
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(
|
|
88
|
+
request
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
kid: kidThumbprint,
|
|
93
|
+
xms_ksl: KeyLocation.SW,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Signs the POP access_token with the local generated key-pair
|
|
99
|
+
* @param accessToken
|
|
100
|
+
* @param request
|
|
101
|
+
* @returns
|
|
102
|
+
*/
|
|
103
|
+
async signPopToken(
|
|
104
|
+
accessToken: string,
|
|
105
|
+
keyId: string,
|
|
106
|
+
request: SignedHttpRequestParameters
|
|
107
|
+
): Promise<string> {
|
|
108
|
+
return this.signPayload(accessToken, keyId, request);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Utility function to generate the signed JWT for an access_token
|
|
113
|
+
* @param payload
|
|
114
|
+
* @param kid
|
|
115
|
+
* @param request
|
|
116
|
+
* @param claims
|
|
117
|
+
* @returns
|
|
118
|
+
*/
|
|
119
|
+
async signPayload(
|
|
120
|
+
payload: string,
|
|
121
|
+
keyId: string,
|
|
122
|
+
request: SignedHttpRequestParameters,
|
|
123
|
+
claims?: object
|
|
124
|
+
): Promise<string> {
|
|
125
|
+
// Deconstruct request to extract SHR parameters
|
|
126
|
+
const {
|
|
127
|
+
resourceRequestMethod,
|
|
128
|
+
resourceRequestUri,
|
|
129
|
+
shrClaims,
|
|
130
|
+
shrNonce,
|
|
131
|
+
} = request;
|
|
132
|
+
|
|
133
|
+
const resourceUrlString = resourceRequestUri
|
|
134
|
+
? new UrlString(resourceRequestUri)
|
|
135
|
+
: undefined;
|
|
136
|
+
const resourceUrlComponents = resourceUrlString?.getUrlComponents();
|
|
137
|
+
return await this.cryptoUtils.signJwt(
|
|
138
|
+
{
|
|
139
|
+
at: payload,
|
|
140
|
+
ts: TimeUtils.nowSeconds(),
|
|
141
|
+
m: resourceRequestMethod?.toUpperCase(),
|
|
142
|
+
u: resourceUrlComponents?.HostNameAndPort,
|
|
143
|
+
nonce: shrNonce || this.cryptoUtils.createNewGuid(),
|
|
144
|
+
p: resourceUrlComponents?.AbsolutePath,
|
|
145
|
+
q: resourceUrlComponents?.QueryString
|
|
146
|
+
? [[], resourceUrlComponents.QueryString]
|
|
147
|
+
: undefined,
|
|
148
|
+
client_claims: shrClaims || undefined,
|
|
149
|
+
...claims,
|
|
150
|
+
},
|
|
151
|
+
keyId,
|
|
152
|
+
request.correlationId
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type SignedHttpRequest = {
|
|
7
|
+
at?: string;
|
|
8
|
+
cnf?: object;
|
|
9
|
+
m?: string;
|
|
10
|
+
u?: string;
|
|
11
|
+
p?: string;
|
|
12
|
+
q?: [Array<string>, string];
|
|
13
|
+
ts?: number;
|
|
14
|
+
nonce?: string;
|
|
15
|
+
client_claims?: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Constants } from "../utils/Constants";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* AuthErrorMessage class containing string constants used by error codes and messages.
|
|
10
|
+
*/
|
|
11
|
+
export const AuthErrorMessage = {
|
|
12
|
+
unexpectedError: {
|
|
13
|
+
code: "unexpected_error",
|
|
14
|
+
desc: "Unexpected error in authentication.",
|
|
15
|
+
},
|
|
16
|
+
postRequestFailed: {
|
|
17
|
+
code: "post_request_failed",
|
|
18
|
+
desc: "Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.",
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* General error class thrown by the MSAL.js library.
|
|
24
|
+
*/
|
|
25
|
+
export class AuthError extends Error {
|
|
26
|
+
/**
|
|
27
|
+
* Short string denoting error
|
|
28
|
+
*/
|
|
29
|
+
errorCode: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Detailed description of error
|
|
33
|
+
*/
|
|
34
|
+
errorMessage: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Describes the subclass of an error
|
|
38
|
+
*/
|
|
39
|
+
subError: string;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* CorrelationId associated with the error
|
|
43
|
+
*/
|
|
44
|
+
correlationId: string;
|
|
45
|
+
|
|
46
|
+
constructor(errorCode?: string, errorMessage?: string, suberror?: string) {
|
|
47
|
+
const errorString = errorMessage
|
|
48
|
+
? `${errorCode}: ${errorMessage}`
|
|
49
|
+
: errorCode;
|
|
50
|
+
super(errorString);
|
|
51
|
+
Object.setPrototypeOf(this, AuthError.prototype);
|
|
52
|
+
|
|
53
|
+
this.errorCode = errorCode || Constants.EMPTY_STRING;
|
|
54
|
+
this.errorMessage = errorMessage || Constants.EMPTY_STRING;
|
|
55
|
+
this.subError = suberror || Constants.EMPTY_STRING;
|
|
56
|
+
this.name = "AuthError";
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
setCorrelationId(correlationId: string): void {
|
|
60
|
+
this.correlationId = correlationId;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Creates an error that is thrown when something unexpected happens in the library.
|
|
65
|
+
* @param errDesc
|
|
66
|
+
*/
|
|
67
|
+
static createUnexpectedError(errDesc: string): AuthError {
|
|
68
|
+
return new AuthError(
|
|
69
|
+
AuthErrorMessage.unexpectedError.code,
|
|
70
|
+
`${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Creates an error for post request failures.
|
|
76
|
+
* @param errDesc
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
static createPostRequestFailed(errDesc: string): AuthError {
|
|
80
|
+
return new AuthError(
|
|
81
|
+
AuthErrorMessage.postRequestFailed.code,
|
|
82
|
+
`${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
}
|