@azure/msal-common 14.4.1-beta.0 → 14.5.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/dist/account/AccountInfo.d.ts +58 -31
- package/dist/account/AccountInfo.d.ts.map +1 -1
- package/dist/account/AccountInfo.mjs +64 -0
- package/dist/account/AccountInfo.mjs.map +1 -0
- package/dist/account/AuthToken.d.ts +17 -17
- package/dist/account/AuthToken.mjs +58 -58
- package/dist/account/AuthToken.mjs.map +1 -1
- package/dist/account/CcsCredential.d.ts +9 -9
- package/dist/account/CcsCredential.mjs +8 -8
- package/dist/account/CcsCredential.mjs.map +1 -1
- package/dist/account/ClientCredentials.d.ts +14 -14
- package/dist/account/ClientInfo.d.ts +18 -19
- package/dist/account/ClientInfo.d.ts.map +1 -1
- package/dist/account/ClientInfo.mjs +37 -37
- package/dist/account/ClientInfo.mjs.map +1 -1
- package/dist/account/TokenClaims.d.ts +83 -65
- package/dist/account/TokenClaims.d.ts.map +1 -1
- package/dist/account/TokenClaims.mjs +25 -0
- package/dist/account/TokenClaims.mjs.map +1 -0
- package/dist/authority/Authority.d.ts +253 -249
- package/dist/authority/Authority.d.ts.map +1 -1
- package/dist/authority/Authority.mjs +812 -789
- package/dist/authority/Authority.mjs.map +1 -1
- package/dist/authority/AuthorityFactory.d.ts +31 -31
- package/dist/authority/AuthorityFactory.mjs +47 -47
- package/dist/authority/AuthorityFactory.mjs.map +1 -1
- package/dist/authority/AuthorityMetadata.d.ts +503 -503
- package/dist/authority/AuthorityMetadata.mjs +603 -603
- package/dist/authority/AuthorityMetadata.mjs.map +1 -1
- package/dist/authority/AuthorityOptions.d.ts +27 -27
- package/dist/authority/AuthorityOptions.mjs +18 -18
- package/dist/authority/AuthorityOptions.mjs.map +1 -1
- package/dist/authority/AuthorityType.d.ts +10 -10
- package/dist/authority/AuthorityType.mjs +13 -13
- package/dist/authority/AuthorityType.mjs.map +1 -1
- package/dist/authority/AzureRegion.d.ts +1 -1
- package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
- package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +1 -1
- package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +1 -1
- package/dist/authority/ImdsOptions.d.ts +5 -5
- package/dist/authority/OIDCOptions.d.ts +8 -8
- package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
- package/dist/authority/OpenIdConfigResponse.mjs +10 -10
- package/dist/authority/OpenIdConfigResponse.mjs.map +1 -1
- package/dist/authority/ProtocolMode.d.ts +8 -8
- package/dist/authority/ProtocolMode.mjs +11 -11
- package/dist/authority/ProtocolMode.mjs.map +1 -1
- package/dist/authority/RegionDiscovery.d.ts +32 -32
- package/dist/authority/RegionDiscovery.mjs +106 -106
- package/dist/authority/RegionDiscovery.mjs.map +1 -1
- package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
- package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
- package/dist/cache/CacheManager.d.ts +517 -485
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.mjs +1264 -1102
- package/dist/cache/CacheManager.mjs.map +1 -1
- package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
- package/dist/cache/entities/AccountEntity.d.ts +106 -101
- package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
- package/dist/cache/entities/AccountEntity.mjs +247 -219
- package/dist/cache/entities/AccountEntity.mjs.map +1 -1
- package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
- package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
- package/dist/cache/entities/AppMetadataEntity.mjs.map +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
- package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
- package/dist/cache/entities/AuthorityMetadataEntity.mjs.map +1 -1
- package/dist/cache/entities/CacheRecord.d.ts +14 -14
- package/dist/cache/entities/CacheRecord.mjs +14 -14
- package/dist/cache/entities/CacheRecord.mjs.map +1 -1
- package/dist/cache/entities/CredentialEntity.d.ts +30 -30
- package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
- package/dist/cache/entities/RefreshTokenEntity.d.ts +5 -7
- package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
- package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
- package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
- package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
- package/dist/cache/entities/ThrottlingEntity.mjs.map +1 -1
- package/dist/cache/interface/ICacheManager.d.ts +166 -166
- package/dist/cache/interface/ICachePlugin.d.ts +5 -5
- package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
- package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
- package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
- package/dist/cache/persistence/TokenCacheContext.mjs.map +1 -1
- package/dist/cache/utils/CacheHelpers.d.ts +64 -64
- package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
- package/dist/cache/utils/CacheHelpers.mjs +231 -234
- package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
- package/dist/cache/utils/CacheTypes.d.ts +69 -67
- package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.d.ts +74 -74
- package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.mjs +404 -403
- package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
- package/dist/client/BaseClient.d.ts +51 -51
- package/dist/client/BaseClient.mjs +100 -100
- package/dist/client/BaseClient.mjs.map +1 -1
- package/dist/client/RefreshTokenClient.d.ts +35 -35
- package/dist/client/RefreshTokenClient.d.ts.map +1 -1
- package/dist/client/RefreshTokenClient.mjs +189 -194
- package/dist/client/RefreshTokenClient.mjs.map +1 -1
- package/dist/client/SilentFlowClient.d.ts +27 -27
- package/dist/client/SilentFlowClient.mjs +118 -118
- package/dist/client/SilentFlowClient.mjs.map +1 -1
- package/dist/config/AppTokenProvider.d.ts +38 -38
- package/dist/config/ClientConfiguration.d.ts +150 -150
- package/dist/config/ClientConfiguration.mjs +97 -97
- package/dist/config/ClientConfiguration.mjs.map +1 -1
- package/dist/constants/AADServerParamKeys.d.ts +52 -0
- package/dist/constants/AADServerParamKeys.d.ts.map +1 -0
- package/dist/constants/AADServerParamKeys.mjs +60 -0
- package/dist/constants/AADServerParamKeys.mjs.map +1 -0
- package/dist/crypto/ICrypto.d.ts +58 -58
- package/dist/crypto/ICrypto.mjs +30 -30
- package/dist/crypto/ICrypto.mjs.map +1 -1
- package/dist/crypto/IGuidGenerator.d.ts +4 -4
- package/dist/crypto/JoseHeader.d.ts +22 -22
- package/dist/crypto/JoseHeader.mjs +37 -37
- package/dist/crypto/JoseHeader.mjs.map +1 -1
- package/dist/crypto/PopTokenGenerator.d.ts +60 -60
- package/dist/crypto/PopTokenGenerator.mjs +82 -82
- package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
- package/dist/crypto/SignedHttpRequest.d.ts +15 -15
- package/dist/error/AuthError.d.ts +44 -44
- package/dist/error/AuthError.mjs +46 -46
- package/dist/error/AuthError.mjs.map +1 -1
- package/dist/error/AuthErrorCodes.d.ts +5 -5
- package/dist/error/AuthErrorCodes.mjs +9 -9
- package/dist/error/AuthErrorCodes.mjs.map +1 -1
- package/dist/error/ClientAuthError.d.ts +237 -237
- package/dist/error/ClientAuthError.mjs +249 -249
- package/dist/error/ClientAuthError.mjs.map +1 -1
- package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
- package/dist/error/ClientAuthErrorCodes.mjs +48 -48
- package/dist/error/ClientAuthErrorCodes.mjs.map +1 -1
- package/dist/error/ClientConfigurationError.d.ts +128 -128
- package/dist/error/ClientConfigurationError.mjs +135 -135
- package/dist/error/ClientConfigurationError.mjs.map +1 -1
- package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
- package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
- package/dist/error/ClientConfigurationErrorCodes.mjs.map +1 -1
- package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
- package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
- package/dist/error/InteractionRequiredAuthError.mjs +77 -78
- package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
- package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +5 -6
- package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs +12 -13
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
- package/dist/error/JoseHeaderError.d.ts +15 -15
- package/dist/error/JoseHeaderError.mjs +22 -22
- package/dist/error/JoseHeaderError.mjs.map +1 -1
- package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
- package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
- package/dist/error/JoseHeaderErrorCodes.mjs.map +1 -1
- package/dist/error/ServerError.d.ts +7 -7
- package/dist/error/ServerError.mjs +14 -14
- package/dist/error/ServerError.mjs.map +1 -1
- package/dist/index.cjs +8645 -8295
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +99 -98
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +7 -3
- package/dist/index.mjs.map +1 -1
- package/dist/logger/Logger.d.ts +95 -95
- package/dist/logger/Logger.mjs +188 -188
- package/dist/logger/Logger.mjs.map +1 -1
- package/dist/network/INetworkModule.d.ts +29 -29
- package/dist/network/INetworkModule.mjs +12 -12
- package/dist/network/INetworkModule.mjs.map +1 -1
- package/dist/network/NetworkManager.d.ts +33 -33
- package/dist/network/NetworkManager.mjs +34 -34
- package/dist/network/NetworkManager.mjs.map +1 -1
- package/dist/network/RequestThumbprint.d.ts +18 -18
- package/dist/network/ThrottlingUtils.d.ts +42 -42
- package/dist/network/ThrottlingUtils.mjs +95 -95
- package/dist/network/ThrottlingUtils.mjs.map +1 -1
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.mjs +4 -4
- package/dist/packageMetadata.mjs.map +1 -1
- package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
- package/dist/request/AuthenticationHeaderParser.mjs +55 -55
- package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
- package/dist/request/BaseAuthRequest.d.ts +43 -43
- package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
- package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
- package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
- package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
- package/dist/request/CommonEndSessionRequest.d.ts +21 -21
- package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
- package/dist/request/CommonRefreshTokenRequest.d.ts +22 -23
- package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
- package/dist/request/CommonSilentFlowRequest.d.ts +20 -21
- package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
- package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
- package/dist/request/NativeRequest.d.ts +19 -19
- package/dist/request/NativeSignOutRequest.d.ts +5 -5
- package/dist/request/RequestParameterBuilder.d.ts +217 -217
- package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
- package/dist/request/RequestParameterBuilder.mjs +383 -382
- package/dist/request/RequestParameterBuilder.mjs.map +1 -1
- package/dist/request/RequestValidator.d.ts +33 -33
- package/dist/request/RequestValidator.mjs +81 -81
- package/dist/request/RequestValidator.mjs.map +1 -1
- package/dist/request/ScopeSet.d.ts +88 -88
- package/dist/request/ScopeSet.mjs +197 -197
- package/dist/request/ScopeSet.mjs.map +1 -1
- package/dist/request/StoreInCache.d.ts +8 -8
- package/dist/response/AuthenticationResult.d.ts +41 -41
- package/dist/response/AuthorizationCodePayload.d.ts +13 -13
- package/dist/response/DeviceCodeResponse.d.ts +25 -25
- package/dist/response/ExternalTokenResponse.d.ts +15 -15
- package/dist/response/IMDSBadResponse.d.ts +4 -4
- package/dist/response/ResponseHandler.d.ts +69 -67
- package/dist/response/ResponseHandler.d.ts.map +1 -1
- package/dist/response/ResponseHandler.mjs +339 -313
- package/dist/response/ResponseHandler.mjs.map +1 -1
- package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
- package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
- package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
- package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
- package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
- package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
- package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
- package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
- package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
- package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
- package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
- package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
- package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
- package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
- package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
- package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
- package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
- package/dist/url/IUri.d.ts +12 -12
- package/dist/url/UrlString.d.ts +48 -48
- package/dist/url/UrlString.mjs +161 -161
- package/dist/url/UrlString.mjs.map +1 -1
- package/dist/utils/Constants.d.ts +296 -365
- package/dist/utils/Constants.d.ts.map +1 -1
- package/dist/utils/Constants.mjs +309 -376
- package/dist/utils/Constants.mjs.map +1 -1
- package/dist/utils/FunctionWrappers.d.ts +27 -27
- package/dist/utils/FunctionWrappers.mjs +84 -84
- package/dist/utils/FunctionWrappers.mjs.map +1 -1
- package/dist/utils/MsalTypes.d.ts +6 -6
- package/dist/utils/ProtocolUtils.d.ts +42 -42
- package/dist/utils/ProtocolUtils.mjs +69 -69
- package/dist/utils/ProtocolUtils.mjs.map +1 -1
- package/dist/utils/StringUtils.d.ts +40 -40
- package/dist/utils/StringUtils.mjs +95 -95
- package/dist/utils/StringUtils.mjs.map +1 -1
- package/dist/utils/TimeUtils.d.ts +27 -27
- package/dist/utils/TimeUtils.mjs +45 -45
- package/dist/utils/TimeUtils.mjs.map +1 -1
- package/dist/utils/UrlUtils.d.ts +10 -10
- package/dist/utils/UrlUtils.mjs +44 -44
- package/dist/utils/UrlUtils.mjs.map +1 -1
- package/package.json +93 -92
- package/src/account/AccountInfo.ts +96 -0
- package/src/account/ClientInfo.ts +2 -3
- package/src/account/TokenClaims.ts +28 -0
- package/src/authority/Authority.ts +29 -2
- package/src/cache/CacheManager.ts +416 -114
- package/src/cache/entities/AccountEntity.ts +84 -33
- package/src/cache/entities/RefreshTokenEntity.ts +1 -3
- package/src/cache/utils/CacheHelpers.ts +1 -6
- package/src/cache/utils/CacheTypes.ts +11 -0
- package/src/client/AuthorizationCodeClient.ts +4 -5
- package/src/client/RefreshTokenClient.ts +3 -15
- package/src/client/SilentFlowClient.ts +1 -1
- package/src/constants/AADServerParamKeys.ts +56 -0
- package/src/crypto/PopTokenGenerator.ts +1 -1
- package/src/error/InteractionRequiredAuthError.ts +0 -2
- package/src/error/InteractionRequiredAuthErrorCodes.ts +0 -1
- package/src/index.ts +17 -5
- package/src/packageMetadata.ts +1 -1
- package/src/request/CommonRefreshTokenRequest.ts +0 -1
- package/src/request/CommonSilentFlowRequest.ts +0 -1
- package/src/request/RequestParameterBuilder.ts +7 -5
- package/src/response/ResponseHandler.ts +95 -27
- package/src/utils/Constants.ts +0 -72
|
@@ -3,18 +3,25 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { CacheAccountType, Separators } from "../../utils/Constants";
|
|
7
7
|
import { Authority } from "../../authority/Authority";
|
|
8
8
|
import { ICrypto } from "../../crypto/ICrypto";
|
|
9
|
-
import { buildClientInfo } from "../../account/ClientInfo";
|
|
10
|
-
import {
|
|
9
|
+
import { ClientInfo, buildClientInfo } from "../../account/ClientInfo";
|
|
10
|
+
import {
|
|
11
|
+
AccountInfo,
|
|
12
|
+
TenantProfile,
|
|
13
|
+
buildTenantProfileFromIdTokenClaims,
|
|
14
|
+
} from "../../account/AccountInfo";
|
|
11
15
|
import {
|
|
12
16
|
createClientAuthError,
|
|
13
17
|
ClientAuthErrorCodes,
|
|
14
18
|
} from "../../error/ClientAuthError";
|
|
15
19
|
import { AuthorityType } from "../../authority/AuthorityType";
|
|
16
20
|
import { Logger } from "../../logger/Logger";
|
|
17
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
TokenClaims,
|
|
23
|
+
getTenantIdFromIdTokenClaims,
|
|
24
|
+
} from "../../account/TokenClaims";
|
|
18
25
|
import { ProtocolMode } from "../../authority/ProtocolMode";
|
|
19
26
|
|
|
20
27
|
/**
|
|
@@ -35,8 +42,8 @@ import { ProtocolMode } from "../../authority/ProtocolMode";
|
|
|
35
42
|
* name: Full name for the account, including given name and family name,
|
|
36
43
|
* lastModificationTime: last time this entity was modified in the cache
|
|
37
44
|
* lastModificationApp:
|
|
38
|
-
* idTokenClaims: Object containing claims parsed from ID token
|
|
39
45
|
* nativeAccountId: Account identifier on the native device
|
|
46
|
+
* tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser
|
|
40
47
|
* }
|
|
41
48
|
* @internal
|
|
42
49
|
*/
|
|
@@ -53,8 +60,8 @@ export class AccountEntity {
|
|
|
53
60
|
lastModificationApp?: string;
|
|
54
61
|
cloudGraphHostName?: string;
|
|
55
62
|
msGraphHost?: string;
|
|
56
|
-
idTokenClaims?: TokenClaims;
|
|
57
63
|
nativeAccountId?: string;
|
|
64
|
+
tenantProfiles?: Array<TenantProfile>;
|
|
58
65
|
|
|
59
66
|
/**
|
|
60
67
|
* Generate Account Id key component as per the schema: <home_account_id>-<environment>
|
|
@@ -88,21 +95,34 @@ export class AccountEntity {
|
|
|
88
95
|
username: this.username,
|
|
89
96
|
localAccountId: this.localAccountId,
|
|
90
97
|
name: this.name,
|
|
91
|
-
idTokenClaims: this.idTokenClaims,
|
|
92
98
|
nativeAccountId: this.nativeAccountId,
|
|
93
99
|
authorityType: this.authorityType,
|
|
100
|
+
// Deserialize tenant profiles array into a Map
|
|
101
|
+
tenantProfiles: new Map(
|
|
102
|
+
(this.tenantProfiles || []).map((tenantProfile) => {
|
|
103
|
+
return [tenantProfile.tenantId, tenantProfile];
|
|
104
|
+
})
|
|
105
|
+
),
|
|
94
106
|
};
|
|
95
107
|
}
|
|
96
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Returns true if the account entity is in single tenant format (outdated), false otherwise
|
|
111
|
+
*/
|
|
112
|
+
isSingleTenant(): boolean {
|
|
113
|
+
return !this.tenantProfiles;
|
|
114
|
+
}
|
|
115
|
+
|
|
97
116
|
/**
|
|
98
117
|
* Generates account key from interface
|
|
99
118
|
* @param accountInterface
|
|
100
119
|
*/
|
|
101
120
|
static generateAccountCacheKey(accountInterface: AccountInfo): string {
|
|
121
|
+
const homeTenantId = accountInterface.homeAccountId.split(".")[1];
|
|
102
122
|
const accountKey = [
|
|
103
123
|
accountInterface.homeAccountId,
|
|
104
|
-
accountInterface.environment ||
|
|
105
|
-
accountInterface.tenantId ||
|
|
124
|
+
accountInterface.environment || "",
|
|
125
|
+
homeTenantId || accountInterface.tenantId || "",
|
|
106
126
|
];
|
|
107
127
|
|
|
108
128
|
return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
|
|
@@ -121,8 +141,10 @@ export class AccountEntity {
|
|
|
121
141
|
msGraphHost?: string;
|
|
122
142
|
environment?: string;
|
|
123
143
|
nativeAccountId?: string;
|
|
144
|
+
tenantProfiles?: Array<TenantProfile>;
|
|
124
145
|
},
|
|
125
|
-
authority: Authority
|
|
146
|
+
authority: Authority,
|
|
147
|
+
base64Decode?: (input: string) => string
|
|
126
148
|
): AccountEntity {
|
|
127
149
|
const account: AccountEntity = new AccountEntity();
|
|
128
150
|
|
|
@@ -134,6 +156,15 @@ export class AccountEntity {
|
|
|
134
156
|
account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;
|
|
135
157
|
}
|
|
136
158
|
|
|
159
|
+
let clientInfo: ClientInfo | undefined;
|
|
160
|
+
|
|
161
|
+
if (accountDetails.clientInfo && base64Decode) {
|
|
162
|
+
clientInfo = buildClientInfo(
|
|
163
|
+
accountDetails.clientInfo,
|
|
164
|
+
base64Decode
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
137
168
|
account.clientInfo = accountDetails.clientInfo;
|
|
138
169
|
account.homeAccountId = accountDetails.homeAccountId;
|
|
139
170
|
account.nativeAccountId = accountDetails.nativeAccountId;
|
|
@@ -151,13 +182,16 @@ export class AccountEntity {
|
|
|
151
182
|
account.environment = env;
|
|
152
183
|
// non AAD scenarios can have empty realm
|
|
153
184
|
account.realm =
|
|
154
|
-
|
|
185
|
+
clientInfo?.utid ||
|
|
186
|
+
getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||
|
|
187
|
+
"";
|
|
155
188
|
|
|
156
189
|
// How do you account for MSA CID here?
|
|
157
190
|
account.localAccountId =
|
|
191
|
+
clientInfo?.uid ||
|
|
158
192
|
accountDetails.idTokenClaims.oid ||
|
|
159
193
|
accountDetails.idTokenClaims.sub ||
|
|
160
|
-
|
|
194
|
+
"";
|
|
161
195
|
|
|
162
196
|
/*
|
|
163
197
|
* In B2C scenarios the emails claim is used instead of preferred_username and it is an array.
|
|
@@ -171,12 +205,26 @@ export class AccountEntity {
|
|
|
171
205
|
? accountDetails.idTokenClaims.emails[0]
|
|
172
206
|
: null;
|
|
173
207
|
|
|
174
|
-
account.username = preferredUsername || email ||
|
|
208
|
+
account.username = preferredUsername || email || "";
|
|
175
209
|
account.name = accountDetails.idTokenClaims.name;
|
|
176
210
|
|
|
177
211
|
account.cloudGraphHostName = accountDetails.cloudGraphHostName;
|
|
178
212
|
account.msGraphHost = accountDetails.msGraphHost;
|
|
179
213
|
|
|
214
|
+
if (accountDetails.tenantProfiles) {
|
|
215
|
+
account.tenantProfiles = accountDetails.tenantProfiles;
|
|
216
|
+
} else {
|
|
217
|
+
const tenantProfiles = [];
|
|
218
|
+
if (accountDetails.idTokenClaims) {
|
|
219
|
+
const tenantProfile = buildTenantProfileFromIdTokenClaims(
|
|
220
|
+
accountDetails.homeAccountId,
|
|
221
|
+
accountDetails.idTokenClaims
|
|
222
|
+
);
|
|
223
|
+
tenantProfiles.push(tenantProfile);
|
|
224
|
+
}
|
|
225
|
+
account.tenantProfiles = tenantProfiles;
|
|
226
|
+
}
|
|
227
|
+
|
|
180
228
|
return account;
|
|
181
229
|
}
|
|
182
230
|
|
|
@@ -208,6 +256,10 @@ export class AccountEntity {
|
|
|
208
256
|
|
|
209
257
|
account.cloudGraphHostName = cloudGraphHostName;
|
|
210
258
|
account.msGraphHost = msGraphHost;
|
|
259
|
+
// Serialize tenant profiles map into an array
|
|
260
|
+
account.tenantProfiles = Array.from(
|
|
261
|
+
accountInfo.tenantProfiles?.values() || []
|
|
262
|
+
);
|
|
211
263
|
|
|
212
264
|
return account;
|
|
213
265
|
}
|
|
@@ -224,31 +276,30 @@ export class AccountEntity {
|
|
|
224
276
|
cryptoObj: ICrypto,
|
|
225
277
|
idTokenClaims?: TokenClaims
|
|
226
278
|
): string {
|
|
227
|
-
|
|
228
|
-
? idTokenClaims.sub
|
|
229
|
-
: Constants.EMPTY_STRING;
|
|
230
|
-
|
|
231
|
-
// since ADFS does not have tid and does not set client_info
|
|
279
|
+
// since ADFS/DSTS do not have tid and does not set client_info
|
|
232
280
|
if (
|
|
233
|
-
|
|
234
|
-
|
|
281
|
+
!(
|
|
282
|
+
authType === AuthorityType.Adfs ||
|
|
283
|
+
authType === AuthorityType.Dsts
|
|
284
|
+
)
|
|
235
285
|
) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
286
|
+
// for cases where there is clientInfo
|
|
287
|
+
if (serverClientInfo) {
|
|
288
|
+
try {
|
|
289
|
+
const clientInfo = buildClientInfo(
|
|
290
|
+
serverClientInfo,
|
|
291
|
+
cryptoObj.base64Decode
|
|
292
|
+
);
|
|
293
|
+
if (clientInfo.uid && clientInfo.utid) {
|
|
294
|
+
return `${clientInfo.uid}.${clientInfo.utid}`;
|
|
295
|
+
}
|
|
296
|
+
} catch (e) {}
|
|
297
|
+
}
|
|
298
|
+
logger.warning("No client info in response");
|
|
247
299
|
}
|
|
248
300
|
|
|
249
301
|
// default to "sub" claim
|
|
250
|
-
|
|
251
|
-
return accountId;
|
|
302
|
+
return idTokenClaims?.sub || "";
|
|
252
303
|
}
|
|
253
304
|
|
|
254
305
|
/**
|
|
@@ -168,8 +168,7 @@ export function createRefreshTokenEntity(
|
|
|
168
168
|
refreshToken: string,
|
|
169
169
|
clientId: string,
|
|
170
170
|
familyId?: string,
|
|
171
|
-
userAssertionHash?: string
|
|
172
|
-
expiresOn?: string
|
|
171
|
+
userAssertionHash?: string
|
|
173
172
|
): RefreshTokenEntity {
|
|
174
173
|
const rtEntity: RefreshTokenEntity = {
|
|
175
174
|
credentialType: CredentialType.REFRESH_TOKEN,
|
|
@@ -187,10 +186,6 @@ export function createRefreshTokenEntity(
|
|
|
187
186
|
rtEntity.familyId = familyId;
|
|
188
187
|
}
|
|
189
188
|
|
|
190
|
-
if (expiresOn) {
|
|
191
|
-
rtEntity.expiresOn = expiresOn;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
189
|
return rtEntity;
|
|
195
190
|
}
|
|
196
191
|
|
|
@@ -60,8 +60,19 @@ export type AccountFilter = Omit<
|
|
|
60
60
|
realm?: string;
|
|
61
61
|
loginHint?: string;
|
|
62
62
|
sid?: string;
|
|
63
|
+
isHomeTenant?: boolean;
|
|
63
64
|
};
|
|
64
65
|
|
|
66
|
+
export type TenantProfileFilter = Pick<
|
|
67
|
+
AccountFilter,
|
|
68
|
+
| "localAccountId"
|
|
69
|
+
| "loginHint"
|
|
70
|
+
| "name"
|
|
71
|
+
| "sid"
|
|
72
|
+
| "isHomeTenant"
|
|
73
|
+
| "username"
|
|
74
|
+
>;
|
|
75
|
+
|
|
65
76
|
/**
|
|
66
77
|
* Credential: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<scheme*>
|
|
67
78
|
*/
|
|
@@ -13,9 +13,9 @@ import {
|
|
|
13
13
|
AuthenticationScheme,
|
|
14
14
|
PromptValue,
|
|
15
15
|
Separators,
|
|
16
|
-
AADServerParamKeys,
|
|
17
16
|
HeaderNames,
|
|
18
17
|
} from "../utils/Constants";
|
|
18
|
+
import * as AADServerParamKeys from "../constants/AADServerParamKeys";
|
|
19
19
|
import {
|
|
20
20
|
ClientConfiguration,
|
|
21
21
|
isOidcProtocolMode,
|
|
@@ -161,8 +161,7 @@ export class AuthorizationCodeClient extends BaseClient {
|
|
|
161
161
|
undefined,
|
|
162
162
|
undefined,
|
|
163
163
|
undefined,
|
|
164
|
-
requestId
|
|
165
|
-
(TimeUtils.nowSeconds() + 24 * 60 * 60).toString()
|
|
164
|
+
requestId
|
|
166
165
|
);
|
|
167
166
|
}
|
|
168
167
|
|
|
@@ -255,7 +254,7 @@ export class AuthorizationCodeClient extends BaseClient {
|
|
|
255
254
|
try {
|
|
256
255
|
const clientInfo = buildClientInfo(
|
|
257
256
|
request.clientInfo,
|
|
258
|
-
this.cryptoUtils
|
|
257
|
+
this.cryptoUtils.base64Decode
|
|
259
258
|
);
|
|
260
259
|
ccsCredential = {
|
|
261
260
|
credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,
|
|
@@ -422,7 +421,7 @@ export class AuthorizationCodeClient extends BaseClient {
|
|
|
422
421
|
try {
|
|
423
422
|
const clientInfo = buildClientInfo(
|
|
424
423
|
request.clientInfo,
|
|
425
|
-
this.cryptoUtils
|
|
424
|
+
this.cryptoUtils.base64Decode
|
|
426
425
|
);
|
|
427
426
|
ccsCred = {
|
|
428
427
|
credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
AuthenticationScheme,
|
|
18
18
|
Errors,
|
|
19
19
|
HeaderNames,
|
|
20
|
-
AADServerParamKeys,
|
|
21
20
|
} from "../utils/Constants";
|
|
21
|
+
import * as AADServerParamKeys from "../constants/AADServerParamKeys";
|
|
22
22
|
import { ResponseHandler } from "../response/ResponseHandler";
|
|
23
23
|
import { AuthenticationResult } from "../response/AuthenticationResult";
|
|
24
24
|
import { PopTokenGenerator } from "../crypto/PopTokenGenerator";
|
|
@@ -102,8 +102,7 @@ export class RefreshTokenClient extends BaseClient {
|
|
|
102
102
|
undefined,
|
|
103
103
|
true,
|
|
104
104
|
request.forceCache,
|
|
105
|
-
requestId
|
|
106
|
-
request.expiresOn
|
|
105
|
+
requestId
|
|
107
106
|
);
|
|
108
107
|
}
|
|
109
108
|
|
|
@@ -141,7 +140,7 @@ export class RefreshTokenClient extends BaseClient {
|
|
|
141
140
|
// if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest
|
|
142
141
|
if (isFOCI) {
|
|
143
142
|
try {
|
|
144
|
-
return invokeAsync(
|
|
143
|
+
return await invokeAsync(
|
|
145
144
|
this.acquireTokenWithCachedRefreshToken.bind(this),
|
|
146
145
|
PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
|
|
147
146
|
this.logger,
|
|
@@ -216,16 +215,6 @@ export class RefreshTokenClient extends BaseClient {
|
|
|
216
215
|
InteractionRequiredAuthErrorCodes.noTokensFound
|
|
217
216
|
);
|
|
218
217
|
}
|
|
219
|
-
|
|
220
|
-
if (
|
|
221
|
-
request.enableRTExpiryCheck &&
|
|
222
|
-
refreshToken.expiresOn &&
|
|
223
|
-
Number(refreshToken.expiresOn) < TimeUtils.nowSeconds() + 5 * 60
|
|
224
|
-
) {
|
|
225
|
-
throw createInteractionRequiredAuthError(
|
|
226
|
-
InteractionRequiredAuthErrorCodes.refreshTokenExpired
|
|
227
|
-
);
|
|
228
|
-
}
|
|
229
218
|
// attach cached RT size to the current measurement
|
|
230
219
|
|
|
231
220
|
const refreshTokenRequest: CommonRefreshTokenRequest = {
|
|
@@ -237,7 +226,6 @@ export class RefreshTokenClient extends BaseClient {
|
|
|
237
226
|
credential: request.account.homeAccountId,
|
|
238
227
|
type: CcsCredentialType.HOME_ACCOUNT_ID,
|
|
239
228
|
},
|
|
240
|
-
expiresOn: refreshToken.expiresOn,
|
|
241
229
|
};
|
|
242
230
|
|
|
243
231
|
return invokeAsync(
|
|
@@ -231,7 +231,7 @@ export class SilentFlowClient extends BaseClient {
|
|
|
231
231
|
checkMaxAge(authTime, request.maxAge);
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
return
|
|
234
|
+
return ResponseHandler.generateAuthenticationResult(
|
|
235
235
|
this.cryptoUtils,
|
|
236
236
|
this.authority,
|
|
237
237
|
cacheRecord,
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const CLIENT_ID = "client_id";
|
|
7
|
+
export const REDIRECT_URI = "redirect_uri";
|
|
8
|
+
export const RESPONSE_TYPE = "response_type";
|
|
9
|
+
export const RESPONSE_MODE = "response_mode";
|
|
10
|
+
export const GRANT_TYPE = "grant_type";
|
|
11
|
+
export const CLAIMS = "claims";
|
|
12
|
+
export const SCOPE = "scope";
|
|
13
|
+
export const ERROR = "error";
|
|
14
|
+
export const ERROR_DESCRIPTION = "error_description";
|
|
15
|
+
export const ACCESS_TOKEN = "access_token";
|
|
16
|
+
export const ID_TOKEN = "id_token";
|
|
17
|
+
export const REFRESH_TOKEN = "refresh_token";
|
|
18
|
+
export const EXPIRES_IN = "expires_in";
|
|
19
|
+
export const STATE = "state";
|
|
20
|
+
export const NONCE = "nonce";
|
|
21
|
+
export const PROMPT = "prompt";
|
|
22
|
+
export const SESSION_STATE = "session_state";
|
|
23
|
+
export const CLIENT_INFO = "client_info";
|
|
24
|
+
export const CODE = "code";
|
|
25
|
+
export const CODE_CHALLENGE = "code_challenge";
|
|
26
|
+
export const CODE_CHALLENGE_METHOD = "code_challenge_method";
|
|
27
|
+
export const CODE_VERIFIER = "code_verifier";
|
|
28
|
+
export const CLIENT_REQUEST_ID = "client-request-id";
|
|
29
|
+
export const X_CLIENT_SKU = "x-client-SKU";
|
|
30
|
+
export const X_CLIENT_VER = "x-client-VER";
|
|
31
|
+
export const X_CLIENT_OS = "x-client-OS";
|
|
32
|
+
export const X_CLIENT_CPU = "x-client-CPU";
|
|
33
|
+
export const X_CLIENT_CURR_TELEM = "x-client-current-telemetry";
|
|
34
|
+
export const X_CLIENT_LAST_TELEM = "x-client-last-telemetry";
|
|
35
|
+
export const X_MS_LIB_CAPABILITY = "x-ms-lib-capability";
|
|
36
|
+
export const X_APP_NAME = "x-app-name";
|
|
37
|
+
export const X_APP_VER = "x-app-ver";
|
|
38
|
+
export const POST_LOGOUT_URI = "post_logout_redirect_uri";
|
|
39
|
+
export const ID_TOKEN_HINT = "id_token_hint";
|
|
40
|
+
export const DEVICE_CODE = "device_code";
|
|
41
|
+
export const CLIENT_SECRET = "client_secret";
|
|
42
|
+
export const CLIENT_ASSERTION = "client_assertion";
|
|
43
|
+
export const CLIENT_ASSERTION_TYPE = "client_assertion_type";
|
|
44
|
+
export const TOKEN_TYPE = "token_type";
|
|
45
|
+
export const REQ_CNF = "req_cnf";
|
|
46
|
+
export const OBO_ASSERTION = "assertion";
|
|
47
|
+
export const REQUESTED_TOKEN_USE = "requested_token_use";
|
|
48
|
+
export const ON_BEHALF_OF = "on_behalf_of";
|
|
49
|
+
export const FOCI = "foci";
|
|
50
|
+
export const CCS_HEADER = "X-AnchorMailbox";
|
|
51
|
+
export const RETURN_SPA_CODE = "return_spa_code";
|
|
52
|
+
export const NATIVE_BROKER = "nativebroker";
|
|
53
|
+
export const LOGOUT_HINT = "logout_hint";
|
|
54
|
+
export const SID = "sid";
|
|
55
|
+
export const LOGIN_HINT = "login_hint";
|
|
56
|
+
export const DOMAIN_HINT = "domain_hint";
|
|
@@ -140,7 +140,7 @@ export class PopTokenGenerator {
|
|
|
140
140
|
? new UrlString(resourceRequestUri)
|
|
141
141
|
: undefined;
|
|
142
142
|
const resourceUrlComponents = resourceUrlString?.getUrlComponents();
|
|
143
|
-
return
|
|
143
|
+
return this.cryptoUtils.signJwt(
|
|
144
144
|
{
|
|
145
145
|
at: payload,
|
|
146
146
|
ts: TimeUtils.nowSeconds(),
|
|
@@ -28,8 +28,6 @@ export const InteractionRequiredAuthSubErrorMessage = [
|
|
|
28
28
|
const InteractionRequiredAuthErrorMessages = {
|
|
29
29
|
[InteractionRequiredAuthErrorCodes.noTokensFound]:
|
|
30
30
|
"No refresh token found in the cache. Please sign-in.",
|
|
31
|
-
[InteractionRequiredAuthErrorCodes.refreshTokenExpired]:
|
|
32
|
-
"Refresh token has expired.",
|
|
33
31
|
[InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]:
|
|
34
32
|
"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",
|
|
35
33
|
};
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
// Codes defined by MSAL
|
|
7
7
|
export const noTokensFound = "no_tokens_found";
|
|
8
8
|
export const nativeAccountUnavailable = "native_account_unavailable";
|
|
9
|
-
export const refreshTokenExpired = "refresh_token_expired";
|
|
10
9
|
|
|
11
10
|
// Codes potentially returned by server
|
|
12
11
|
export const interactionRequired = "interaction_required";
|
package/src/index.ts
CHANGED
|
@@ -28,9 +28,19 @@ export {
|
|
|
28
28
|
} from "./config/AppTokenProvider";
|
|
29
29
|
export { ClientConfiguration } from "./config/ClientConfiguration";
|
|
30
30
|
// Account
|
|
31
|
-
export {
|
|
31
|
+
export {
|
|
32
|
+
AccountInfo,
|
|
33
|
+
ActiveAccountFilters,
|
|
34
|
+
TenantProfile,
|
|
35
|
+
updateAccountTenantProfileData,
|
|
36
|
+
tenantIdMatchesHomeTenant,
|
|
37
|
+
buildTenantProfileFromIdTokenClaims,
|
|
38
|
+
} from "./account/AccountInfo";
|
|
32
39
|
export * as AuthToken from "./account/AuthToken";
|
|
33
|
-
export {
|
|
40
|
+
export {
|
|
41
|
+
TokenClaims,
|
|
42
|
+
getTenantIdFromIdTokenClaims,
|
|
43
|
+
} from "./account/TokenClaims";
|
|
34
44
|
export { TokenClaims as IdTokenClaims } from "./account/TokenClaims";
|
|
35
45
|
export { CcsCredential, CcsCredentialType } from "./account/CcsCredential";
|
|
36
46
|
export {
|
|
@@ -136,7 +146,10 @@ export {
|
|
|
136
146
|
DeviceCodeResponse,
|
|
137
147
|
ServerDeviceCodeResponse,
|
|
138
148
|
} from "./response/DeviceCodeResponse";
|
|
139
|
-
export {
|
|
149
|
+
export {
|
|
150
|
+
ResponseHandler,
|
|
151
|
+
buildAccountToCache,
|
|
152
|
+
} from "./response/ResponseHandler";
|
|
140
153
|
export { ScopeSet } from "./request/ScopeSet";
|
|
141
154
|
export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser";
|
|
142
155
|
// Logger Callback
|
|
@@ -181,12 +194,10 @@ export {
|
|
|
181
194
|
CacheAccountType,
|
|
182
195
|
AuthenticationScheme,
|
|
183
196
|
CodeChallengeMethodValues,
|
|
184
|
-
SSOTypes,
|
|
185
197
|
PasswordGrantConstants,
|
|
186
198
|
ThrottlingConstants,
|
|
187
199
|
ClaimsRequestKeys,
|
|
188
200
|
HeaderNames,
|
|
189
|
-
AADServerParamKeys,
|
|
190
201
|
Errors,
|
|
191
202
|
THE_FAMILY_ID,
|
|
192
203
|
ONE_DAY_IN_MS,
|
|
@@ -195,6 +206,7 @@ export {
|
|
|
195
206
|
HttpStatus,
|
|
196
207
|
JsonWebTokenTypes,
|
|
197
208
|
} from "./utils/Constants";
|
|
209
|
+
export * as AADServerParamKeys from "./constants/AADServerParamKeys";
|
|
198
210
|
export { StringUtils } from "./utils/StringUtils";
|
|
199
211
|
export { StringDict } from "./utils/MsalTypes";
|
|
200
212
|
export {
|
package/src/packageMetadata.ts
CHANGED
|
@@ -4,10 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
AADServerParamKeys,
|
|
8
7
|
Constants,
|
|
9
8
|
ResponseMode,
|
|
10
|
-
SSOTypes,
|
|
11
9
|
CLIENT_INFO,
|
|
12
10
|
AuthenticationScheme,
|
|
13
11
|
ClaimsRequestKeys,
|
|
@@ -16,6 +14,7 @@ import {
|
|
|
16
14
|
ThrottlingConstants,
|
|
17
15
|
HeaderNames,
|
|
18
16
|
} from "../utils/Constants";
|
|
17
|
+
import * as AADServerParamKeys from "../constants/AADServerParamKeys";
|
|
19
18
|
import { ScopeSet } from "./ScopeSet";
|
|
20
19
|
import {
|
|
21
20
|
createClientConfigurationError,
|
|
@@ -161,7 +160,7 @@ export class RequestParameterBuilder {
|
|
|
161
160
|
*/
|
|
162
161
|
addDomainHint(domainHint: string): void {
|
|
163
162
|
this.parameters.set(
|
|
164
|
-
|
|
163
|
+
AADServerParamKeys.DOMAIN_HINT,
|
|
165
164
|
encodeURIComponent(domainHint)
|
|
166
165
|
);
|
|
167
166
|
}
|
|
@@ -171,7 +170,10 @@ export class RequestParameterBuilder {
|
|
|
171
170
|
* @param loginHint
|
|
172
171
|
*/
|
|
173
172
|
addLoginHint(loginHint: string): void {
|
|
174
|
-
this.parameters.set(
|
|
173
|
+
this.parameters.set(
|
|
174
|
+
AADServerParamKeys.LOGIN_HINT,
|
|
175
|
+
encodeURIComponent(loginHint)
|
|
176
|
+
);
|
|
175
177
|
}
|
|
176
178
|
|
|
177
179
|
/**
|
|
@@ -201,7 +203,7 @@ export class RequestParameterBuilder {
|
|
|
201
203
|
* @param sid
|
|
202
204
|
*/
|
|
203
205
|
addSid(sid: string): void {
|
|
204
|
-
this.parameters.set(
|
|
206
|
+
this.parameters.set(AADServerParamKeys.SID, encodeURIComponent(sid));
|
|
205
207
|
}
|
|
206
208
|
|
|
207
209
|
/**
|