@azure/msal-common 9.0.2 → 9.1.1

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.
Files changed (141) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +62 -62
  3. package/dist/_virtual/_tslib.js +1 -1
  4. package/dist/account/AuthToken.js +1 -1
  5. package/dist/account/AuthToken.js.map +1 -1
  6. package/dist/account/CcsCredential.js +1 -1
  7. package/dist/account/CcsCredential.js.map +1 -1
  8. package/dist/account/ClientInfo.js +1 -1
  9. package/dist/account/ClientInfo.js.map +1 -1
  10. package/dist/authority/Authority.js +1 -1
  11. package/dist/authority/Authority.js.map +1 -1
  12. package/dist/authority/AuthorityFactory.js +1 -1
  13. package/dist/authority/AuthorityFactory.js.map +1 -1
  14. package/dist/authority/AuthorityMetadata.js +1 -1
  15. package/dist/authority/AuthorityMetadata.js.map +1 -1
  16. package/dist/authority/AuthorityOptions.js +1 -1
  17. package/dist/authority/AuthorityOptions.js.map +1 -1
  18. package/dist/authority/AuthorityType.js +1 -1
  19. package/dist/authority/AuthorityType.js.map +1 -1
  20. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js +1 -1
  21. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js.map +1 -1
  22. package/dist/authority/CloudInstanceDiscoveryResponse.js +1 -1
  23. package/dist/authority/CloudInstanceDiscoveryResponse.js.map +1 -1
  24. package/dist/authority/OpenIdConfigResponse.js +1 -1
  25. package/dist/authority/OpenIdConfigResponse.js.map +1 -1
  26. package/dist/authority/ProtocolMode.js +1 -1
  27. package/dist/authority/ProtocolMode.js.map +1 -1
  28. package/dist/authority/RegionDiscovery.js +1 -1
  29. package/dist/authority/RegionDiscovery.js.map +1 -1
  30. package/dist/cache/CacheManager.js +1 -1
  31. package/dist/cache/CacheManager.js.map +1 -1
  32. package/dist/cache/entities/AccessTokenEntity.js +1 -1
  33. package/dist/cache/entities/AccessTokenEntity.js.map +1 -1
  34. package/dist/cache/entities/AccountEntity.js +1 -1
  35. package/dist/cache/entities/AccountEntity.js.map +1 -1
  36. package/dist/cache/entities/AppMetadataEntity.js +1 -1
  37. package/dist/cache/entities/AppMetadataEntity.js.map +1 -1
  38. package/dist/cache/entities/AuthorityMetadataEntity.js +1 -1
  39. package/dist/cache/entities/AuthorityMetadataEntity.js.map +1 -1
  40. package/dist/cache/entities/CacheRecord.js +1 -1
  41. package/dist/cache/entities/CacheRecord.js.map +1 -1
  42. package/dist/cache/entities/CredentialEntity.js +3 -3
  43. package/dist/cache/entities/CredentialEntity.js.map +1 -1
  44. package/dist/cache/entities/IdTokenEntity.js +1 -1
  45. package/dist/cache/entities/IdTokenEntity.js.map +1 -1
  46. package/dist/cache/entities/RefreshTokenEntity.js +1 -1
  47. package/dist/cache/entities/RefreshTokenEntity.js.map +1 -1
  48. package/dist/cache/entities/ServerTelemetryEntity.js +1 -1
  49. package/dist/cache/entities/ServerTelemetryEntity.js.map +1 -1
  50. package/dist/cache/entities/ThrottlingEntity.js +1 -1
  51. package/dist/cache/entities/ThrottlingEntity.js.map +1 -1
  52. package/dist/cache/persistence/TokenCacheContext.js +1 -1
  53. package/dist/cache/persistence/TokenCacheContext.js.map +1 -1
  54. package/dist/client/AuthorizationCodeClient.js +1 -1
  55. package/dist/client/AuthorizationCodeClient.js.map +1 -1
  56. package/dist/client/BaseClient.js +1 -1
  57. package/dist/client/BaseClient.js.map +1 -1
  58. package/dist/client/ClientCredentialClient.js +1 -1
  59. package/dist/client/ClientCredentialClient.js.map +1 -1
  60. package/dist/client/DeviceCodeClient.js +1 -1
  61. package/dist/client/DeviceCodeClient.js.map +1 -1
  62. package/dist/client/OnBehalfOfClient.d.ts.map +1 -1
  63. package/dist/client/OnBehalfOfClient.js +4 -1
  64. package/dist/client/OnBehalfOfClient.js.map +1 -1
  65. package/dist/client/RefreshTokenClient.js +1 -1
  66. package/dist/client/RefreshTokenClient.js.map +1 -1
  67. package/dist/client/SilentFlowClient.js +1 -1
  68. package/dist/client/SilentFlowClient.js.map +1 -1
  69. package/dist/client/UsernamePasswordClient.js +1 -1
  70. package/dist/client/UsernamePasswordClient.js.map +1 -1
  71. package/dist/config/ClientConfiguration.js +1 -1
  72. package/dist/config/ClientConfiguration.js.map +1 -1
  73. package/dist/crypto/ICrypto.js +1 -1
  74. package/dist/crypto/ICrypto.js.map +1 -1
  75. package/dist/crypto/JoseHeader.js +1 -1
  76. package/dist/crypto/JoseHeader.js.map +1 -1
  77. package/dist/crypto/PopTokenGenerator.js +1 -1
  78. package/dist/crypto/PopTokenGenerator.js.map +1 -1
  79. package/dist/error/AuthError.js +1 -1
  80. package/dist/error/AuthError.js.map +1 -1
  81. package/dist/error/ClientAuthError.js +1 -1
  82. package/dist/error/ClientAuthError.js.map +1 -1
  83. package/dist/error/ClientConfigurationError.js +1 -1
  84. package/dist/error/ClientConfigurationError.js.map +1 -1
  85. package/dist/error/InteractionRequiredAuthError.js +1 -1
  86. package/dist/error/InteractionRequiredAuthError.js.map +1 -1
  87. package/dist/error/JoseHeaderError.js +1 -1
  88. package/dist/error/JoseHeaderError.js.map +1 -1
  89. package/dist/error/ServerError.js +1 -1
  90. package/dist/error/ServerError.js.map +1 -1
  91. package/dist/index.cjs.js +89 -11
  92. package/dist/index.cjs.js.map +1 -1
  93. package/dist/index.js +1 -1
  94. package/dist/logger/Logger.js +1 -1
  95. package/dist/logger/Logger.js.map +1 -1
  96. package/dist/network/INetworkModule.js +1 -1
  97. package/dist/network/INetworkModule.js.map +1 -1
  98. package/dist/network/NetworkManager.js +1 -1
  99. package/dist/network/NetworkManager.js.map +1 -1
  100. package/dist/network/ThrottlingUtils.js +1 -1
  101. package/dist/network/ThrottlingUtils.js.map +1 -1
  102. package/dist/packageMetadata.d.ts +1 -1
  103. package/dist/packageMetadata.js +2 -2
  104. package/dist/packageMetadata.js.map +1 -1
  105. package/dist/request/AuthenticationHeaderParser.js +1 -1
  106. package/dist/request/AuthenticationHeaderParser.js.map +1 -1
  107. package/dist/request/RequestParameterBuilder.js +1 -1
  108. package/dist/request/RequestParameterBuilder.js.map +1 -1
  109. package/dist/request/RequestValidator.js +1 -1
  110. package/dist/request/RequestValidator.js.map +1 -1
  111. package/dist/request/ScopeSet.js +1 -1
  112. package/dist/request/ScopeSet.js.map +1 -1
  113. package/dist/response/ResponseHandler.js +1 -1
  114. package/dist/response/ResponseHandler.js.map +1 -1
  115. package/dist/telemetry/performance/IPerformanceClient.d.ts +3 -1
  116. package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -1
  117. package/dist/telemetry/performance/PerformanceClient.d.ts +32 -7
  118. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  119. package/dist/telemetry/performance/PerformanceClient.js +79 -8
  120. package/dist/telemetry/performance/PerformanceClient.js.map +1 -1
  121. package/dist/telemetry/performance/PerformanceEvent.d.ts +12 -1
  122. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  123. package/dist/telemetry/performance/PerformanceEvent.js +2 -1
  124. package/dist/telemetry/performance/PerformanceEvent.js.map +1 -1
  125. package/dist/telemetry/performance/StubPerformanceClient.d.ts +1 -0
  126. package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -1
  127. package/dist/telemetry/performance/StubPerformanceClient.js +4 -1
  128. package/dist/telemetry/performance/StubPerformanceClient.js.map +1 -1
  129. package/dist/telemetry/server/ServerTelemetryManager.js +1 -1
  130. package/dist/telemetry/server/ServerTelemetryManager.js.map +1 -1
  131. package/dist/url/UrlString.js +1 -1
  132. package/dist/url/UrlString.js.map +1 -1
  133. package/dist/utils/Constants.js +1 -1
  134. package/dist/utils/Constants.js.map +1 -1
  135. package/dist/utils/ProtocolUtils.js +1 -1
  136. package/dist/utils/ProtocolUtils.js.map +1 -1
  137. package/dist/utils/StringUtils.js +1 -1
  138. package/dist/utils/StringUtils.js.map +1 -1
  139. package/dist/utils/TimeUtils.js +1 -1
  140. package/dist/utils/TimeUtils.js.map +1 -1
  141. package/package.json +1 -1
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) Microsoft Corporation. All rights reserved.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
package/README.md CHANGED
@@ -1,62 +1,62 @@
1
- # Microsoft Authentication Library for JavaScript (MSAL.js) Common Protocols Package
2
-
3
- [![npm version](https://img.shields.io/npm/v/@azure/msal-common.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-common/)
4
- [![npm version](https://img.shields.io/npm/dm/@azure/msal-common.svg)](https://nodei.co/npm/@azure/msal-common/)
5
- [![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-common)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js)
6
-
7
- | <a href="https://docs.microsoft.com/azure/active-directory/develop/guidedsetups/active-directory-javascriptspa" target="_blank">Getting Started</a> | <a href="https://aka.ms/aaddevv2" target="_blank">AAD Docs</a> | <a href="https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html" target="_blank">Library Reference</a> |
8
- | --- | --- | --- |
9
-
10
- 1. [About](#about)
11
- 2. [FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md)
12
- 1. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/CHANGELOG.md)
13
- 1. [Releases](#releases)
14
- 1. [Prerequisites and Usage](#prerequisites-and-usage)
15
- 1. [Installation](#installation)
16
- 1. [Security Reporting](#security-reporting)
17
- 1. [License](#license)
18
- 1. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct)
19
-
20
- ## About
21
-
22
- The MSAL library for JavaScript enables client-side JavaScript applications to authenticate users using [Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io).
23
-
24
- The `@azure/msal-common` package described by the code in this folder serves as a common package dependency for the `@azure/msal-browser` package (and in the future, the msal-node package). Be aware that this is an internal library, and is subject to frequent change. **It is not meant for production consumption by itself.**
25
-
26
- ## FAQ
27
-
28
- See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md).
29
-
30
- ## Releases
31
-
32
- *Expect us to detail our major and minor releases moving forward, while leaving out our patch releases. Patch release notes can be found in our change log.*
33
-
34
- | Date | Release | Announcement | Main features |
35
- | ------| ------- | ---------| --------- |
36
- | August 4, 2020 | @azure/msal-common v1.1.0 | [Release Notes](https://https://github.com/AzureAD/microsoft-authentication-library-for-js/releases/tag/msal-common-v1.1.0)
37
- | July 20, 2020 | @azure/msal-common v1.0.0 | [Release Notes](https://github.com/AzureAD/microsoft-authentication-library-for-js/releases/tag/msal-common-v1.0.0) | Full release version of the `@azure/msal-common` |
38
- | May 11, 2020 | @azure/msal-common v1.0.0-beta | Beta version of the `@azure/msal-common` package |
39
- | January 17, 2020 | @azure/msal-common v1.0.0-alpha | No release notes yet | Alpha version of the `@azure/msal-common` package with authorization code flow for SPAs working in dev. |
40
-
41
- ## Prerequisites and Usage
42
- This library is not meant for production use. Please use one of these packages specific to the platform you are developing for:
43
-
44
- - [MSAL for Single Page Applications (SPAs)](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser)
45
- - [MSAL for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node)
46
-
47
- ## Installation
48
- ### Via NPM:
49
-
50
- npm install @azure/msal-common
51
-
52
- ## Security Reporting
53
-
54
- If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts.
55
-
56
- ## License
57
-
58
- Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License (the "License");
59
-
60
- ## We Value and Adhere to the Microsoft Open Source Code of Conduct
61
-
62
- This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
1
+ # Microsoft Authentication Library for JavaScript (MSAL.js) Common Protocols Package
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@azure/msal-common.svg?style=flat)](https://www.npmjs.com/package/@azure/msal-common/)
4
+ [![npm version](https://img.shields.io/npm/dm/@azure/msal-common.svg)](https://nodei.co/npm/@azure/msal-common/)
5
+ [![codecov](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js/branch/dev/graph/badge.svg?flag=msal-common)](https://codecov.io/gh/AzureAD/microsoft-authentication-library-for-js)
6
+
7
+ | <a href="https://docs.microsoft.com/azure/active-directory/develop/guidedsetups/active-directory-javascriptspa" target="_blank">Getting Started</a> | <a href="https://aka.ms/aaddevv2" target="_blank">AAD Docs</a> | <a href="https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html" target="_blank">Library Reference</a> |
8
+ | --- | --- | --- |
9
+
10
+ 1. [About](#about)
11
+ 2. [FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md)
12
+ 1. [Changelog](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/CHANGELOG.md)
13
+ 1. [Releases](#releases)
14
+ 1. [Prerequisites and Usage](#prerequisites-and-usage)
15
+ 1. [Installation](#installation)
16
+ 1. [Security Reporting](#security-reporting)
17
+ 1. [License](#license)
18
+ 1. [Code of Conduct](#we-value-and-adhere-to-the-microsoft-open-source-code-of-conduct)
19
+
20
+ ## About
21
+
22
+ The MSAL library for JavaScript enables client-side JavaScript applications to authenticate users using [Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview) work and school accounts (AAD), Microsoft personal accounts (MSA) and social identity providers like Facebook, Google, LinkedIn, Microsoft accounts, etc. through [Azure AD B2C](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-overview#identity-providers) service. It also enables your app to get tokens to access [Microsoft Cloud](https://www.microsoft.com/enterprise) services such as [Microsoft Graph](https://graph.microsoft.io).
23
+
24
+ The `@azure/msal-common` package described by the code in this folder serves as a common package dependency for the `@azure/msal-browser` package (and in the future, the msal-node package). Be aware that this is an internal library, and is subject to frequent change. **It is not meant for production consumption by itself.**
25
+
26
+ ## FAQ
27
+
28
+ See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/FAQ.md).
29
+
30
+ ## Releases
31
+
32
+ *Expect us to detail our major and minor releases moving forward, while leaving out our patch releases. Patch release notes can be found in our change log.*
33
+
34
+ | Date | Release | Announcement | Main features |
35
+ | ------| ------- | ---------| --------- |
36
+ | August 4, 2020 | @azure/msal-common v1.1.0 | [Release Notes](https://https://github.com/AzureAD/microsoft-authentication-library-for-js/releases/tag/msal-common-v1.1.0)
37
+ | July 20, 2020 | @azure/msal-common v1.0.0 | [Release Notes](https://github.com/AzureAD/microsoft-authentication-library-for-js/releases/tag/msal-common-v1.0.0) | Full release version of the `@azure/msal-common` |
38
+ | May 11, 2020 | @azure/msal-common v1.0.0-beta | Beta version of the `@azure/msal-common` package |
39
+ | January 17, 2020 | @azure/msal-common v1.0.0-alpha | No release notes yet | Alpha version of the `@azure/msal-common` package with authorization code flow for SPAs working in dev. |
40
+
41
+ ## Prerequisites and Usage
42
+ This library is not meant for production use. Please use one of these packages specific to the platform you are developing for:
43
+
44
+ - [MSAL for Single Page Applications (SPAs)](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser)
45
+ - [MSAL for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node)
46
+
47
+ ## Installation
48
+ ### Via NPM:
49
+
50
+ npm install @azure/msal-common
51
+
52
+ ## Security Reporting
53
+
54
+ If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts.
55
+
56
+ ## License
57
+
58
+ Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License (the "License");
59
+
60
+ ## We Value and Adhere to the Microsoft Open Source Code of Conduct
61
+
62
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  /*! *****************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  import { ClientAuthError } from '../error/ClientAuthError.js';
4
4
  import { StringUtils } from '../utils/StringUtils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"AuthToken.js","sources":["../../src/account/AuthToken.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims\";\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\n\n/**\n * JWT Token representation class. Parses token string and generates claims object.\n */\nexport class AuthToken {\n\n // Raw Token string\n rawToken: string;\n // Claims inside token\n claims: TokenClaims;\n constructor(rawToken: string, crypto: ICrypto) {\n if (StringUtils.isEmpty(rawToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\n }\n\n this.rawToken = rawToken;\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\n }\n\n /**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\n\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\n\n // token will be decoded to get the username\n try {\n const base64TokenPayload = decodedToken.JWSPayload;\n\n // base64Decode() should throw an error if there is an issue\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\n return JSON.parse(base64Decoded) as TokenClaims;\n } catch (err) {\n throw ClientAuthError.createTokenParsingError(err);\n }\n }\n\n /**\n * Determine if the token's max_age has transpired\n */\n static checkMaxAge(authTime: number, maxAge: number): void {\n /*\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\n */\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\n throw ClientAuthError.createMaxAgeTranspiredError();\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAQH;;AAEG;AACH,IAAA,SAAA,kBAAA,YAAA;IAMI,SAAY,SAAA,CAAA,QAAgB,EAAE,MAAe,EAAA;AACzC,QAAA,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,YAAA,MAAM,eAAe,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAChE;AAED;;;;AAIG;AACI,IAAA,SAAA,CAAA,kBAAkB,GAAzB,UAA0B,YAAoB,EAAE,MAAe,EAAA;QAE3D,IAAM,YAAY,GAAqB,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;;QAGjF,IAAI;AACA,YAAA,IAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;;YAGnD,IAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAC9D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAgB,CAAC;AACnD,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACV,YAAA,MAAM,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtD,SAAA;KACJ,CAAA;AAED;;AAEG;AACI,IAAA,SAAA,CAAA,WAAW,GAAlB,UAAmB,QAAgB,EAAE,MAAc,EAAA;AAC/C;;;;AAIG;AACH,QAAA,IAAM,cAAc,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,eAAe,CAAC,2BAA2B,EAAE,CAAC;AACvD,SAAA;KACJ,CAAA;IACL,OAAC,SAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
1
+ {"version":3,"file":"AuthToken.js","sources":["../../src/account/AuthToken.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { TokenClaims } from \"./TokenClaims\";\r\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nexport class AuthToken {\r\n\r\n // Raw Token string\r\n rawToken: string;\r\n // Claims inside token\r\n claims: TokenClaims;\r\n constructor(rawToken: string, crypto: ICrypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\r\n\r\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\r\n\r\n // token will be decoded to get the username\r\n try {\r\n const base64TokenPayload = decodedToken.JWSPayload;\r\n\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded) as TokenClaims;\r\n } catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if the token's max_age has transpired\r\n */\r\n static checkMaxAge(authTime: number, maxAge: number): void {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\r\n throw ClientAuthError.createMaxAgeTranspiredError();\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAQH;;AAEG;AACH,IAAA,SAAA,kBAAA,YAAA;IAMI,SAAY,SAAA,CAAA,QAAgB,EAAE,MAAe,EAAA;AACzC,QAAA,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,YAAA,MAAM,eAAe,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAChE;AAED;;;;AAIG;AACI,IAAA,SAAA,CAAA,kBAAkB,GAAzB,UAA0B,YAAoB,EAAE,MAAe,EAAA;QAE3D,IAAM,YAAY,GAAqB,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;;QAGjF,IAAI;AACA,YAAA,IAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC;;YAGnD,IAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAC9D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAgB,CAAC;AACnD,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACV,YAAA,MAAM,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtD,SAAA;KACJ,CAAA;AAED;;AAEG;AACI,IAAA,SAAA,CAAA,WAAW,GAAlB,UAAmB,QAAgB,EAAE,MAAc,EAAA;AAC/C;;;;AAIG;AACH,QAAA,IAAM,cAAc,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,eAAe,CAAC,2BAA2B,EAAE,CAAC;AACvD,SAAA;KACJ,CAAA;IACL,OAAC,SAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"CcsCredential.js","sources":["../../src/account/CcsCredential.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n credential: string,\n type: CcsCredentialType\n};\n\nexport enum CcsCredentialType {\n HOME_ACCOUNT_ID = \"home_account_id\",\n UPN = \"UPN\"\n}\n"],"names":[],"mappings":";;AAAA;;;AAGG;IAOS,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACf,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"CcsCredential.js","sources":["../../src/account/CcsCredential.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport type CcsCredential = {\r\n credential: string,\r\n type: CcsCredentialType\r\n};\r\n\r\nexport enum CcsCredentialType {\r\n HOME_ACCOUNT_ID = \"home_account_id\",\r\n UPN = \"UPN\"\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;AAGG;IAOS,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACf,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  import { ClientAuthError } from '../error/ClientAuthError.js';
4
4
  import { StringUtils } from '../utils/StringUtils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ClientInfo.js","sources":["../../src/account/ClientInfo.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Separators, Constants } from \"../utils/Constants\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n uid: string,\n utid: string\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\n if (StringUtils.isEmpty(rawClientInfo)) {\n throw ClientAuthError.createClientInfoEmptyError();\n }\n\n try {\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\n return JSON.parse(decodedClientInfo) as ClientInfo;\n } catch (e) {\n throw ClientAuthError.createClientInfoDecodingError((e as ClientAuthError).message);\n }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId \n */\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\n if (StringUtils.isEmpty(homeAccountId)) {\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\n }\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\n return {\n uid: clientInfoParts[0],\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\n };\n}\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;AAeH;;;;AAIG;AACa,SAAA,eAAe,CAAC,aAAqB,EAAE,MAAe,EAAA;AAClE,IAAA,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpC,QAAA,MAAM,eAAe,CAAC,0BAA0B,EAAE,CAAC;AACtD,KAAA;IAED,IAAI;QACA,IAAM,iBAAiB,GAAW,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACrE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAe,CAAC;AACtD,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACR,MAAM,eAAe,CAAC,6BAA6B,CAAE,CAAqB,CAAC,OAAO,CAAC,CAAC;AACvF,KAAA;AACL,CAAC;AAED;;;AAGG;AACG,SAAU,gCAAgC,CAAC,aAAqB,EAAA;AAClE,IAAA,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpC,QAAA,MAAM,eAAe,CAAC,6BAA6B,CAAC,4BAA4B,CAAC,CAAC;AACrF,KAAA;AACD,IAAA,IAAM,eAAe,GAAa,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC3F,OAAO;AACH,QAAA,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;KACjF,CAAC;AACN;;;;"}
1
+ {"version":3,"file":"ClientInfo.js","sources":["../../src/account/ClientInfo.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Separators, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Client info object which consists of two IDs. Need to add more info here.\r\n */\r\nexport type ClientInfo = {\r\n uid: string,\r\n utid: string\r\n};\r\n\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n try {\r\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo) as ClientInfo;\r\n } catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError((e as ClientAuthError).message);\r\n }\r\n}\r\n\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId \r\n */\r\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;AAeH;;;;AAIG;AACa,SAAA,eAAe,CAAC,aAAqB,EAAE,MAAe,EAAA;AAClE,IAAA,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpC,QAAA,MAAM,eAAe,CAAC,0BAA0B,EAAE,CAAC;AACtD,KAAA;IAED,IAAI;QACA,IAAM,iBAAiB,GAAW,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACrE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAe,CAAC;AACtD,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACR,MAAM,eAAe,CAAC,6BAA6B,CAAE,CAAqB,CAAC,OAAO,CAAC,CAAC;AACvF,KAAA;AACL,CAAC;AAED;;;AAGG;AACG,SAAU,gCAAgC,CAAC,aAAqB,EAAA;AAClE,IAAA,IAAI,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpC,QAAA,MAAM,eAAe,CAAC,6BAA6B,CAAC,4BAA4B,CAAC,CAAC;AACrF,KAAA;AACD,IAAA,IAAM,eAAe,GAAa,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC3F,OAAO;AACH,QAAA,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;KACjF,CAAC;AACN;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
4
  import { AuthorityType } from './AuthorityType.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Authority.js","sources":["../../src/authority/Authority.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType\";\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\nimport { UrlString } from \"../url/UrlString\";\nimport { IUri } from \"../url/IUri\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\nimport { AuthorityOptions , AzureCloudInstance } from \"./AuthorityOptions\";\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\nimport { CloudInstanceDiscoveryErrorResponse, isCloudInstanceDiscoveryErrorResponse } from \"./CloudInstanceDiscoveryErrorResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\nimport { Logger } from \"../logger/Logger\";\nimport { AuthError } from \"../error/AuthError\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n */\nexport class Authority {\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n // Proxy url string\n private proxyUrl: string;\n // Logger object\n private logger: Logger;\n\n constructor(\n authority: string,\n networkInterface: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n proxyUrl?: string\n ) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscovery = new RegionDiscovery(networkInterface);\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\n this.logger = logger;\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n if (pathSegments.length) {\n switch(pathSegments[0].toLowerCase()) {\n case Constants.ADFS:\n return AuthorityType.Adfs;\n case Constants.DSTS:\n return AuthorityType.Dsts;\n default:\n break;\n }\n }\n return AuthorityType.Default;\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if(this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw ClientAuthError.createLogoutNotSupportedError();\n }\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.issuer);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Jwks_uri for token signing keys\n */\n public get jwksUri(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.jwks_uri);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString\n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n const cachedPart = cachedAuthorityParts[index];\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n }\n });\n\n return endpoint;\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n if (\n this.authorityType === AuthorityType.Adfs ||\n this.authorityType === AuthorityType.Dsts ||\n this.protocolMode === ProtocolMode.OIDC\n ) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whethr or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise<void> {\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n if (!metadataEntity) {\n metadataEntity = new AuthorityMetadataEntity();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\n\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.resetExpiresAt();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity\n */\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n let metadata = this.getEndpointMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateEndpointMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\n metadata = await this.getEndpointMetadataFromNetwork();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\n }\n\n metadataEntity.updateEndpointMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } \n\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\n harcodedMetadata\n );\n }\n\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n } else {\n throw ClientAuthError.createUnableToGetOpenidConfigError(\n this.defaultOpenIdConfigurationEndpoint\n );\n }\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached \n * authority metadata can be used for the requested authority. Protects against same domain different \n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\n } catch (e) {\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's \n * hardcoded list of metadata\n */\n\n try {\n const response = await this.networkInterface.\n sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\n return isOpenIdConfigResponse(response.body) ? response.body : null;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get OAuth endpoints for common authorities.\n */\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n if (this.canonicalAuthority in EndpointMetadata) {\n return EndpointMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Update the retrieved metadata with regional information.\n */\n private async updateMetadataWithRegionalInformation(metadata: OpenIdConfigResponse): Promise<OpenIdConfigResponse> {\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(\n this.authorityOptions.azureRegionConfiguration?.environmentRegion,\n this.regionDiscoveryMetadata,\n this.proxyUrl\n );\n\n const azureRegion = \n this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n ? autodetectedRegionName\n : this.authorityOptions.azureRegionConfiguration?.azureRegion;\n\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n } else {\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome = (\n this.authorityOptions.azureRegionConfiguration?.azureRegion === autodetectedRegionName\n ) ?\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\n } else {\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n }\n }\n\n if (azureRegion) {\n this.regionDiscoveryMetadata.region_used = azureRegion;\n return Authority.replaceWithRegionalInformation(metadata, azureRegion);\n }\n\n return metadata;\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\n * and returns where the information was retrieved from\n * @param cachedMetadata\n * @param newMetadata\n */\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`);\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`);\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\n const metadataEntityExpired = metadataEntity.isExpired();\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\n this.logger.verbose(\"Found metadata in the cache.\");\n // No need to update\n return AuthorityMetadataSource.CACHE;\n } else if (metadataEntityExpired) {\n this.logger.verbose(\"The metadata entity is expired.\");\n }\n\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n if (metadata) {\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n }\n \n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n }\n \n // Metadata could not be obtained from the config, cache, network or hardcoded values\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\n throw ClientConfigurationError.createUntrustedAuthorityError();\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\n try {\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n parsedResponse.metadata,\n this.hostnameAndPort\n );\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\n if (metadata) {\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\n return metadata;\n } else {\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\n }\n } catch (e) {\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\n const instanceDiscoveryEndpoint =\n `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n let match = null;\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse>(\n instanceDiscoveryEndpoint,\n options\n );\n \n let typedResponseBody: CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse;\n let metadata: Array<CloudDiscoveryMetadata>;\n if (isCloudInstanceDiscoveryResponse(response.body)) {\n typedResponseBody = response.body as CloudInstanceDiscoveryResponse;\n metadata = typedResponseBody.metadata;\n\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\n\n typedResponseBody = response.body as CloudInstanceDiscoveryErrorResponse;\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\n return null;\n }\n\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\n \n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\n metadata = [];\n } else {\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\n return null;\n }\n\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n metadata,\n this.hostnameAndPort\n );\n } catch (error) {\n if (error instanceof AuthError) {\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\n } else {\n const typedError = error as Error;\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\n }\n \n return null;\n }\n\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n if (!match) {\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\n\n match = Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n return match;\n }\n\n /**\n * Get cloud discovery metadata for common authorities \n */\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\n });\n\n return matches.length > 0;\n }\n\n /**\n * helper function to populate the authority based on azureCloudOptions\n * @param authorityString\n * @param azureCloudOptions\n */\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\n let authorityAzureCloudInstance;\n\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n }\n\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host\n */\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host]\n };\n }\n\n /**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\n static getCloudDiscoveryMetadataFromNetworkResponse(\n response: CloudDiscoveryMetadata[],\n authority: string\n ): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.indexOf(authority) > -1) {\n return metadata;\n }\n }\n\n return null;\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if(this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host\n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n *\n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n *\n * @param host string\n * @param region string\n */\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n *\n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(\n metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING\n );\n\n if (metadata.end_session_endpoint) {\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\n }\n\n return metadata;\n }\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Authority.js","sources":["../../src/authority/Authority.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\r\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions , AzureCloudInstance } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudInstanceDiscoveryErrorResponse, isCloudInstanceDiscoveryErrorResponse } from \"./CloudInstanceDiscoveryErrorResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { AuthError } from \"../error/AuthError\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n // Region discovery metadata\r\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\r\n // Proxy url string\r\n private proxyUrl: string;\r\n // Logger object\r\n private logger: Logger;\r\n\r\n constructor(\r\n authority: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n proxyUrl?: string\r\n ) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\r\n this.logger = logger;\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n if (pathSegments.length) {\r\n switch(pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n default:\r\n break;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n public get jwksUri(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.jwks_uri);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n const cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return endpoint;\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (\r\n this.authorityType === AuthorityType.Adfs ||\r\n this.authorityType === AuthorityType.Dsts ||\r\n this.protocolMode === ProtocolMode.OIDC\r\n ) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise<void> {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } \r\n\r\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\r\n harcodedMetadata\r\n );\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(\r\n this.defaultOpenIdConfigurationEndpoint\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached \r\n * authority metadata can be used for the requested authority. Protects against same domain different \r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n * \r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\r\n const options: ImdsOptions = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's \r\n * hardcoded list of metadata\r\n */\r\n\r\n try {\r\n const response = await this.networkInterface.\r\n sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\r\n if (this.canonicalAuthority in EndpointMetadata) {\r\n return EndpointMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n */\r\n private async updateMetadataWithRegionalInformation(metadata: OpenIdConfigResponse): Promise<OpenIdConfigResponse> {\r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(\r\n this.authorityOptions.azureRegionConfiguration?.environmentRegion,\r\n this.regionDiscoveryMetadata,\r\n this.proxyUrl\r\n );\r\n\r\n const azureRegion = \r\n this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\r\n ? autodetectedRegionName\r\n : this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n } else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (\r\n this.authorityOptions.azureRegionConfiguration?.azureRegion === autodetectedRegionName\r\n ) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n } else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n\r\n return metadata;\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param cachedMetadata\r\n * @param newMetadata\r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\r\n const metadataEntityExpired = metadataEntity.isExpired();\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\r\n this.logger.verbose(\"Found metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n } else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n \r\n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\r\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\r\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n \r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n parsedResponse.metadata,\r\n this.hostnameAndPort\r\n );\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n } else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n } catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * \r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\r\n const instanceDiscoveryEndpoint =\r\n `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options: ImdsOptions = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n\r\n let match = null;\r\n try {\r\n const response =\r\n await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse>(\r\n instanceDiscoveryEndpoint,\r\n options\r\n );\r\n \r\n let typedResponseBody: CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse;\r\n let metadata: Array<CloudDiscoveryMetadata>;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody = response.body as CloudInstanceDiscoveryResponse;\r\n metadata = typedResponseBody.metadata;\r\n\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n\r\n typedResponseBody = response.body as CloudInstanceDiscoveryErrorResponse;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n \r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n } else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n metadata,\r\n this.hostnameAndPort\r\n );\r\n } catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n } else {\r\n const typedError = error as Error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n \r\n return null;\r\n }\r\n\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n\r\n match = Authority.createCloudDiscoveryMetadataFromHost(\r\n this.hostnameAndPort\r\n );\r\n }\r\n return match;\r\n }\r\n\r\n /**\r\n * Get cloud discovery metadata for common authorities \r\n */\r\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\r\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\r\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\r\n let authorityAzureCloudInstance;\r\n\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(\r\n response: CloudDiscoveryMetadata[],\r\n authority: string\r\n ): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(\r\n metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING\r\n );\r\n\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n\r\n return metadata;\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { Authority } from './Authority.js';
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorityFactory.js","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority } from \"./Authority\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\nimport { Logger } from \"../logger/Logger\";\n\nexport class AuthorityFactory {\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n */\n static async createDiscoveredInstance(\n authorityUri: string,\n networkClient: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n proxyUrl?: string\n ): Promise<Authority> {\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(\n authorityUri,\n networkClient,\n cacheManager,\n authorityOptions,\n logger,\n proxyUrl\n );\n\n try {\n await acquireTokenAuthority.resolveEndpointsAsync();\n return acquireTokenAuthority;\n } catch (e) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\n }\n }\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Does not perform endpoint discovery.\n *\n * @param authorityUrl\n * @param networkInterface\n * @param protocolMode\n */\n static createInstance(\n authorityUrl: string,\n networkInterface: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n proxyUrl?: string\n ): Authority {\n // Throw error if authority url is empty\n if (StringUtils.isEmpty(authorityUrl)) {\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, proxyUrl);\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;AAGG;AAWH,IAAA,gBAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,gBAAA,GAAA;KA+DC;AA7DG;;;;;;;;;AASG;AACU,IAAA,gBAAA,CAAA,wBAAwB,GAArC,UACI,YAAoB,EACpB,aAA6B,EAC7B,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,QAAiB,EAAA;;;;;;AAGX,wBAAA,qBAAqB,GAAc,gBAAgB,CAAC,cAAc,CACpE,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,QAAQ,CACX,CAAC;;;;AAGE,wBAAA,OAAA,CAAA,CAAA,YAAM,qBAAqB,CAAC,qBAAqB,EAAE,CAAA,CAAA;;AAAnD,wBAAA,EAAA,CAAA,IAAA,EAAmD,CAAC;AACpD,wBAAA,OAAA,CAAA,CAAA,aAAO,qBAAqB,CAAC,CAAA;;;AAE7B,wBAAA,MAAM,eAAe,CAAC,sCAAsC,CAAC,GAAC,CAAC,CAAC;;;;;AAEvE,KAAA,CAAA;AAED;;;;;;;;;AASG;AACI,IAAA,gBAAA,CAAA,cAAc,GAArB,UACI,YAAoB,EACpB,gBAAgC,EAChC,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,QAAiB,EAAA;;AAGjB,QAAA,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACnC,YAAA,MAAM,wBAAwB,CAAC,mBAAmB,EAAE,CAAC;AACxD,SAAA;AAED,QAAA,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC1G,CAAA;IACL,OAAC,gBAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
1
+ {"version":3,"file":"AuthorityFactory.js","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { Logger } from \"../logger/Logger\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(\r\n authorityUri: string,\r\n networkClient: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n proxyUrl?: string\r\n ): Promise<Authority> {\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(\r\n authorityUri,\r\n networkClient,\r\n cacheManager,\r\n authorityOptions,\r\n logger,\r\n proxyUrl\r\n );\r\n\r\n try {\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(\r\n authorityUrl: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n proxyUrl?: string\r\n ): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, proxyUrl);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAAA;;;AAGG;AAWH,IAAA,gBAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,gBAAA,GAAA;KA+DC;AA7DG;;;;;;;;;AASG;AACU,IAAA,gBAAA,CAAA,wBAAwB,GAArC,UACI,YAAoB,EACpB,aAA6B,EAC7B,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,QAAiB,EAAA;;;;;;AAGX,wBAAA,qBAAqB,GAAc,gBAAgB,CAAC,cAAc,CACpE,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,QAAQ,CACX,CAAC;;;;AAGE,wBAAA,OAAA,CAAA,CAAA,YAAM,qBAAqB,CAAC,qBAAqB,EAAE,CAAA,CAAA;;AAAnD,wBAAA,EAAA,CAAA,IAAA,EAAmD,CAAC;AACpD,wBAAA,OAAA,CAAA,CAAA,aAAO,qBAAqB,CAAC,CAAA;;;AAE7B,wBAAA,MAAM,eAAe,CAAC,sCAAsC,CAAC,GAAC,CAAC,CAAC;;;;;AAEvE,KAAA,CAAA;AAED;;;;;;;;;AASG;AACI,IAAA,gBAAA,CAAA,cAAc,GAArB,UACI,YAAoB,EACpB,gBAAgC,EAChC,YAA2B,EAC3B,gBAAkC,EAClC,MAAc,EACd,QAAiB,EAAA;;AAGjB,QAAA,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACnC,YAAA,MAAM,wBAAwB,CAAC,mBAAmB,EAAE,CAAC;AACxD,SAAA;AAED,QAAA,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC1G,CAAA;IACL,OAAC,gBAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v9.0.2 2023-01-09 */
1
+ /*! @azure/msal-common v9.1.1 2023-01-19 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.