@azure/identity 4.8.1-alpha.20250410.1 → 4.9.1-alpha.20250416.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/constants.d.ts +1 -1
- package/dist/browser/constants.js +1 -1
- package/dist/browser/constants.js.map +1 -1
- package/dist/commonjs/constants.d.ts +1 -1
- package/dist/commonjs/constants.js +1 -1
- package/dist/commonjs/constants.js.map +1 -1
- package/dist/esm/constants.d.ts +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/workerd/client/identityClient.d.ts +65 -0
- package/dist/workerd/client/identityClient.d.ts.map +1 -0
- package/dist/workerd/client/identityClient.js +248 -0
- package/dist/workerd/client/identityClient.js.map +1 -0
- package/dist/workerd/constants.d.ts +69 -0
- package/dist/workerd/constants.d.ts.map +1 -0
- package/dist/workerd/constants.js +75 -0
- package/dist/workerd/constants.js.map +1 -0
- package/dist/workerd/credentials/authorityValidationOptions.d.ts +16 -0
- package/dist/workerd/credentials/authorityValidationOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/authorityValidationOptions.js +4 -0
- package/dist/workerd/credentials/authorityValidationOptions.js.map +1 -0
- package/dist/workerd/credentials/authorizationCodeCredential.d.ts +73 -0
- package/dist/workerd/credentials/authorizationCodeCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/authorizationCodeCredential.js +60 -0
- package/dist/workerd/credentials/authorizationCodeCredential.js.map +1 -0
- package/dist/workerd/credentials/authorizationCodeCredentialOptions.d.ts +8 -0
- package/dist/workerd/credentials/authorizationCodeCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/authorizationCodeCredentialOptions.js +4 -0
- package/dist/workerd/credentials/authorizationCodeCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/azureApplicationCredential.d.ts +24 -0
- package/dist/workerd/credentials/azureApplicationCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/azureApplicationCredential.js +32 -0
- package/dist/workerd/credentials/azureApplicationCredential.js.map +1 -0
- package/dist/workerd/credentials/azureApplicationCredentialOptions.d.ts +13 -0
- package/dist/workerd/credentials/azureApplicationCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/azureApplicationCredentialOptions.js +4 -0
- package/dist/workerd/credentials/azureApplicationCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/azureCliCredential.d.ts +64 -0
- package/dist/workerd/credentials/azureCliCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/azureCliCredential.js +191 -0
- package/dist/workerd/credentials/azureCliCredential.js.map +1 -0
- package/dist/workerd/credentials/azureCliCredentialOptions.d.ts +20 -0
- package/dist/workerd/credentials/azureCliCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/azureCliCredentialOptions.js +4 -0
- package/dist/workerd/credentials/azureCliCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/azureDeveloperCliCredential.d.ts +71 -0
- package/dist/workerd/credentials/azureDeveloperCliCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/azureDeveloperCliCredential.js +173 -0
- package/dist/workerd/credentials/azureDeveloperCliCredential.js.map +1 -0
- package/dist/workerd/credentials/azureDeveloperCliCredentialOptions.d.ts +15 -0
- package/dist/workerd/credentials/azureDeveloperCliCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/azureDeveloperCliCredentialOptions.js +4 -0
- package/dist/workerd/credentials/azureDeveloperCliCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/azurePipelinesCredential.d.ts +38 -0
- package/dist/workerd/credentials/azurePipelinesCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/azurePipelinesCredential.js +141 -0
- package/dist/workerd/credentials/azurePipelinesCredential.js.map +1 -0
- package/dist/workerd/credentials/azurePipelinesCredentialOptions.d.ts +9 -0
- package/dist/workerd/credentials/azurePipelinesCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/azurePipelinesCredentialOptions.js +4 -0
- package/dist/workerd/credentials/azurePipelinesCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/azurePowerShellCredential.d.ts +75 -0
- package/dist/workerd/credentials/azurePowerShellCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/azurePowerShellCredential.js +229 -0
- package/dist/workerd/credentials/azurePowerShellCredential.js.map +1 -0
- package/dist/workerd/credentials/azurePowerShellCredentialOptions.d.ts +15 -0
- package/dist/workerd/credentials/azurePowerShellCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/azurePowerShellCredentialOptions.js +4 -0
- package/dist/workerd/credentials/azurePowerShellCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/brokerAuthOptions.d.ts +13 -0
- package/dist/workerd/credentials/brokerAuthOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/brokerAuthOptions.js +2 -0
- package/dist/workerd/credentials/brokerAuthOptions.js.map +1 -0
- package/dist/workerd/credentials/browserCustomizationOptions.d.ts +19 -0
- package/dist/workerd/credentials/browserCustomizationOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/browserCustomizationOptions.js +4 -0
- package/dist/workerd/credentials/browserCustomizationOptions.js.map +1 -0
- package/dist/workerd/credentials/chainedTokenCredential.d.ts +51 -0
- package/dist/workerd/credentials/chainedTokenCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/chainedTokenCredential.js +92 -0
- package/dist/workerd/credentials/chainedTokenCredential.js.map +1 -0
- package/dist/workerd/credentials/clientAssertionCredential.d.ts +33 -0
- package/dist/workerd/credentials/clientAssertionCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/clientAssertionCredential.js +55 -0
- package/dist/workerd/credentials/clientAssertionCredential.js.map +1 -0
- package/dist/workerd/credentials/clientAssertionCredentialOptions.d.ts +9 -0
- package/dist/workerd/credentials/clientAssertionCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/clientAssertionCredentialOptions.js +4 -0
- package/dist/workerd/credentials/clientAssertionCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredential.d.ts +72 -0
- package/dist/workerd/credentials/clientCertificateCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredential.js +122 -0
- package/dist/workerd/credentials/clientCertificateCredential.js.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredentialModels.d.ts +31 -0
- package/dist/workerd/credentials/clientCertificateCredentialModels.d.ts.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredentialModels.js +4 -0
- package/dist/workerd/credentials/clientCertificateCredentialModels.js.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredentialOptions.d.ts +14 -0
- package/dist/workerd/credentials/clientCertificateCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/clientCertificateCredentialOptions.js +4 -0
- package/dist/workerd/credentials/clientCertificateCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/clientSecretCredential.d.ts +37 -0
- package/dist/workerd/credentials/clientSecretCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/clientSecretCredential.js +60 -0
- package/dist/workerd/credentials/clientSecretCredential.js.map +1 -0
- package/dist/workerd/credentials/clientSecretCredentialOptions.d.ts +9 -0
- package/dist/workerd/credentials/clientSecretCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/clientSecretCredentialOptions.js +4 -0
- package/dist/workerd/credentials/clientSecretCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/credentialPersistenceOptions.d.ts +30 -0
- package/dist/workerd/credentials/credentialPersistenceOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/credentialPersistenceOptions.js +4 -0
- package/dist/workerd/credentials/credentialPersistenceOptions.js.map +1 -0
- package/dist/workerd/credentials/defaultAzureCredential.d.ts +65 -0
- package/dist/workerd/credentials/defaultAzureCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/defaultAzureCredential.js +164 -0
- package/dist/workerd/credentials/defaultAzureCredential.js.map +1 -0
- package/dist/workerd/credentials/defaultAzureCredentialOptions.d.ts +49 -0
- package/dist/workerd/credentials/defaultAzureCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/defaultAzureCredentialOptions.js +4 -0
- package/dist/workerd/credentials/defaultAzureCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/deviceCodeCredential.d.ts +67 -0
- package/dist/workerd/credentials/deviceCodeCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/deviceCodeCredential.js +91 -0
- package/dist/workerd/credentials/deviceCodeCredential.js.map +1 -0
- package/dist/workerd/credentials/deviceCodeCredentialOptions.d.ts +53 -0
- package/dist/workerd/credentials/deviceCodeCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/deviceCodeCredentialOptions.js +4 -0
- package/dist/workerd/credentials/deviceCodeCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/environmentCredential.d.ts +52 -0
- package/dist/workerd/credentials/environmentCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/environmentCredential.js +130 -0
- package/dist/workerd/credentials/environmentCredential.js.map +1 -0
- package/dist/workerd/credentials/environmentCredentialOptions.d.ts +9 -0
- package/dist/workerd/credentials/environmentCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/environmentCredentialOptions.js +4 -0
- package/dist/workerd/credentials/environmentCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/interactiveBrowserCredential.d.ts +56 -0
- package/dist/workerd/credentials/interactiveBrowserCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/interactiveBrowserCredential.js +91 -0
- package/dist/workerd/credentials/interactiveBrowserCredential.js.map +1 -0
- package/dist/workerd/credentials/interactiveBrowserCredentialOptions.d.ts +77 -0
- package/dist/workerd/credentials/interactiveBrowserCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/interactiveBrowserCredentialOptions.js +4 -0
- package/dist/workerd/credentials/interactiveBrowserCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/interactiveCredentialOptions.d.ts +25 -0
- package/dist/workerd/credentials/interactiveCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/interactiveCredentialOptions.js +4 -0
- package/dist/workerd/credentials/interactiveCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsMsi.d.ts +18 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsMsi.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsMsi.js +99 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsMsi.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsRetryPolicy.d.ts +12 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsRetryPolicy.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsRetryPolicy.js +33 -0
- package/dist/workerd/credentials/managedIdentityCredential/imdsRetryPolicy.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/index.d.ts +61 -0
- package/dist/workerd/credentials/managedIdentityCredential/index.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/index.js +239 -0
- package/dist/workerd/credentials/managedIdentityCredential/index.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/models.d.ts +24 -0
- package/dist/workerd/credentials/managedIdentityCredential/models.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/models.js +4 -0
- package/dist/workerd/credentials/managedIdentityCredential/models.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/options.d.ts +37 -0
- package/dist/workerd/credentials/managedIdentityCredential/options.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/options.js +4 -0
- package/dist/workerd/credentials/managedIdentityCredential/options.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/tokenExchangeMsi.d.ts +14 -0
- package/dist/workerd/credentials/managedIdentityCredential/tokenExchangeMsi.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/tokenExchangeMsi.js +32 -0
- package/dist/workerd/credentials/managedIdentityCredential/tokenExchangeMsi.js.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/utils.d.ts +37 -0
- package/dist/workerd/credentials/managedIdentityCredential/utils.d.ts.map +1 -0
- package/dist/workerd/credentials/managedIdentityCredential/utils.js +81 -0
- package/dist/workerd/credentials/managedIdentityCredential/utils.js.map +1 -0
- package/dist/workerd/credentials/multiTenantTokenCredentialOptions.d.ts +12 -0
- package/dist/workerd/credentials/multiTenantTokenCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/multiTenantTokenCredentialOptions.js +4 -0
- package/dist/workerd/credentials/multiTenantTokenCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/onBehalfOfCredential.d.ts +105 -0
- package/dist/workerd/credentials/onBehalfOfCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/onBehalfOfCredential.js +112 -0
- package/dist/workerd/credentials/onBehalfOfCredential.js.map +1 -0
- package/dist/workerd/credentials/onBehalfOfCredentialOptions.d.ts +76 -0
- package/dist/workerd/credentials/onBehalfOfCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/onBehalfOfCredentialOptions.js +4 -0
- package/dist/workerd/credentials/onBehalfOfCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/usernamePasswordCredential.d.ts +42 -0
- package/dist/workerd/credentials/usernamePasswordCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/usernamePasswordCredential.js +68 -0
- package/dist/workerd/credentials/usernamePasswordCredential.js.map +1 -0
- package/dist/workerd/credentials/usernamePasswordCredentialOptions.d.ts +10 -0
- package/dist/workerd/credentials/usernamePasswordCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/usernamePasswordCredentialOptions.js +4 -0
- package/dist/workerd/credentials/usernamePasswordCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredential.d.ts +66 -0
- package/dist/workerd/credentials/visualStudioCodeCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredential.js +196 -0
- package/dist/workerd/credentials/visualStudioCodeCredential.js.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialOptions.d.ts +16 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialOptions.js +4 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialOptions.js.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialPlugin.d.ts +16 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialPlugin.d.ts.map +1 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialPlugin.js +4 -0
- package/dist/workerd/credentials/visualStudioCodeCredentialPlugin.js.map +1 -0
- package/dist/workerd/credentials/workloadIdentityCredential.d.ts +47 -0
- package/dist/workerd/credentials/workloadIdentityCredential.d.ts.map +1 -0
- package/dist/workerd/credentials/workloadIdentityCredential.js +114 -0
- package/dist/workerd/credentials/workloadIdentityCredential.js.map +1 -0
- package/dist/workerd/credentials/workloadIdentityCredentialOptions.d.ts +20 -0
- package/dist/workerd/credentials/workloadIdentityCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/credentials/workloadIdentityCredentialOptions.js +4 -0
- package/dist/workerd/credentials/workloadIdentityCredentialOptions.js.map +1 -0
- package/dist/workerd/errors.d.ts +139 -0
- package/dist/workerd/errors.d.ts.map +1 -0
- package/dist/workerd/errors.js +123 -0
- package/dist/workerd/errors.js.map +1 -0
- package/dist/workerd/index.d.ts +61 -0
- package/dist/workerd/index.d.ts.map +1 -0
- package/dist/workerd/index.js +34 -0
- package/dist/workerd/index.js.map +1 -0
- package/dist/workerd/msal/browserFlows/msalBrowserCommon.d.ts +19 -0
- package/dist/workerd/msal/browserFlows/msalBrowserCommon.d.ts.map +1 -0
- package/dist/workerd/msal/browserFlows/msalBrowserCommon.js +291 -0
- package/dist/workerd/msal/browserFlows/msalBrowserCommon.js.map +1 -0
- package/dist/workerd/msal/browserFlows/msalBrowserOptions.d.ts +87 -0
- package/dist/workerd/msal/browserFlows/msalBrowserOptions.d.ts.map +1 -0
- package/dist/workerd/msal/browserFlows/msalBrowserOptions.js +4 -0
- package/dist/workerd/msal/browserFlows/msalBrowserOptions.js.map +1 -0
- package/dist/workerd/msal/credentials.d.ts +52 -0
- package/dist/workerd/msal/credentials.d.ts.map +1 -0
- package/dist/workerd/msal/credentials.js +4 -0
- package/dist/workerd/msal/credentials.js.map +1 -0
- package/dist/workerd/msal/msal.d.ts +3 -0
- package/dist/workerd/msal/msal.d.ts.map +1 -0
- package/dist/workerd/msal/msal.js +5 -0
- package/dist/workerd/msal/msal.js.map +1 -0
- package/dist/workerd/msal/nodeFlows/brokerOptions.d.ts +44 -0
- package/dist/workerd/msal/nodeFlows/brokerOptions.d.ts.map +1 -0
- package/dist/workerd/msal/nodeFlows/brokerOptions.js +2 -0
- package/dist/workerd/msal/nodeFlows/brokerOptions.js.map +1 -0
- package/dist/workerd/msal/nodeFlows/msalClient.d.ts +186 -0
- package/dist/workerd/msal/nodeFlows/msalClient.d.ts.map +1 -0
- package/dist/workerd/msal/nodeFlows/msalClient.js +469 -0
- package/dist/workerd/msal/nodeFlows/msalClient.js.map +1 -0
- package/dist/workerd/msal/nodeFlows/msalPlugins.d.ts +91 -0
- package/dist/workerd/msal/nodeFlows/msalPlugins.d.ts.map +1 -0
- package/dist/workerd/msal/nodeFlows/msalPlugins.js +87 -0
- package/dist/workerd/msal/nodeFlows/msalPlugins.js.map +1 -0
- package/dist/workerd/msal/nodeFlows/tokenCachePersistenceOptions.d.ts +24 -0
- package/dist/workerd/msal/nodeFlows/tokenCachePersistenceOptions.d.ts.map +1 -0
- package/dist/workerd/msal/nodeFlows/tokenCachePersistenceOptions.js +4 -0
- package/dist/workerd/msal/nodeFlows/tokenCachePersistenceOptions.js.map +1 -0
- package/dist/workerd/msal/types.d.ts +87 -0
- package/dist/workerd/msal/types.d.ts.map +1 -0
- package/dist/workerd/msal/types.js +4 -0
- package/dist/workerd/msal/types.js.map +1 -0
- package/dist/workerd/msal/utils.d.ts +95 -0
- package/dist/workerd/msal/utils.d.ts.map +1 -0
- package/dist/workerd/msal/utils.js +238 -0
- package/dist/workerd/msal/utils.js.map +1 -0
- package/dist/workerd/package.json +3 -0
- package/dist/workerd/plugins/consumer.d.ts +28 -0
- package/dist/workerd/plugins/consumer.d.ts.map +1 -0
- package/dist/workerd/plugins/consumer.js +43 -0
- package/dist/workerd/plugins/consumer.js.map +1 -0
- package/dist/workerd/plugins/provider.d.ts +36 -0
- package/dist/workerd/plugins/provider.d.ts.map +1 -0
- package/dist/workerd/plugins/provider.js +4 -0
- package/dist/workerd/plugins/provider.js.map +1 -0
- package/dist/workerd/regionalAuthority.d.ts +122 -0
- package/dist/workerd/regionalAuthority.d.ts.map +1 -0
- package/dist/workerd/regionalAuthority.js +140 -0
- package/dist/workerd/regionalAuthority.js.map +1 -0
- package/dist/workerd/tokenCredentialOptions.d.ts +28 -0
- package/dist/workerd/tokenCredentialOptions.d.ts.map +1 -0
- package/dist/workerd/tokenCredentialOptions.js +4 -0
- package/dist/workerd/tokenCredentialOptions.js.map +1 -0
- package/dist/workerd/tokenProvider.d.ts +39 -0
- package/dist/workerd/tokenProvider.d.ts.map +1 -0
- package/dist/workerd/tokenProvider.js +53 -0
- package/dist/workerd/tokenProvider.js.map +1 -0
- package/dist/workerd/util/authHostEnv-browser.d.mts +4 -0
- package/dist/workerd/util/authHostEnv-browser.d.mts.map +1 -0
- package/dist/workerd/util/authHostEnv-browser.mjs +7 -0
- package/dist/workerd/util/authHostEnv-browser.mjs.map +1 -0
- package/dist/workerd/util/identityTokenEndpoint.d.ts +2 -0
- package/dist/workerd/util/identityTokenEndpoint.d.ts.map +1 -0
- package/dist/workerd/util/identityTokenEndpoint.js +11 -0
- package/dist/workerd/util/identityTokenEndpoint.js.map +1 -0
- package/dist/workerd/util/logging.d.ts +70 -0
- package/dist/workerd/util/logging.d.ts.map +1 -0
- package/dist/workerd/util/logging.js +94 -0
- package/dist/workerd/util/logging.js.map +1 -0
- package/dist/workerd/util/processMultiTenantRequest.d.ts +10 -0
- package/dist/workerd/util/processMultiTenantRequest.d.ts.map +1 -0
- package/dist/workerd/util/processMultiTenantRequest.js +35 -0
- package/dist/workerd/util/processMultiTenantRequest.js.map +1 -0
- package/dist/workerd/util/processUtils.d.ts +13 -0
- package/dist/workerd/util/processUtils.d.ts.map +1 -0
- package/dist/workerd/util/processUtils.js +32 -0
- package/dist/workerd/util/processUtils.js.map +1 -0
- package/dist/workerd/util/scopeUtils.d.ts +17 -0
- package/dist/workerd/util/scopeUtils.d.ts.map +1 -0
- package/dist/workerd/util/scopeUtils.js +29 -0
- package/dist/workerd/util/scopeUtils.js.map +1 -0
- package/dist/workerd/util/subscriptionUtils.d.ts +6 -0
- package/dist/workerd/util/subscriptionUtils.d.ts.map +1 -0
- package/dist/workerd/util/subscriptionUtils.js +14 -0
- package/dist/workerd/util/subscriptionUtils.js.map +1 -0
- package/dist/workerd/util/tenantIdUtils.d.ts +15 -0
- package/dist/workerd/util/tenantIdUtils.d.ts.map +1 -0
- package/dist/workerd/util/tenantIdUtils.js +44 -0
- package/dist/workerd/util/tenantIdUtils.js.map +1 -0
- package/dist/workerd/util/tracing.d.ts +6 -0
- package/dist/workerd/util/tracing.d.ts.map +1 -0
- package/dist/workerd/util/tracing.js +14 -0
- package/dist/workerd/util/tracing.js.map +1 -0
- package/package.json +9 -3
@@ -0,0 +1,75 @@
|
|
1
|
+
import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth";
|
2
|
+
import type { AzurePowerShellCredentialOptions } from "./azurePowerShellCredentialOptions.js";
|
3
|
+
/**
|
4
|
+
* Returns a platform-appropriate command name by appending ".exe" on Windows.
|
5
|
+
*
|
6
|
+
* @internal
|
7
|
+
*/
|
8
|
+
export declare function formatCommand(commandName: string): string;
|
9
|
+
/**
|
10
|
+
* Known PowerShell errors
|
11
|
+
* @internal
|
12
|
+
*/
|
13
|
+
export declare const powerShellErrors: {
|
14
|
+
login: string;
|
15
|
+
installed: string;
|
16
|
+
};
|
17
|
+
/**
|
18
|
+
* Messages to use when throwing in this credential.
|
19
|
+
* @internal
|
20
|
+
*/
|
21
|
+
export declare const powerShellPublicErrorMessages: {
|
22
|
+
login: string;
|
23
|
+
installed: string;
|
24
|
+
troubleshoot: string;
|
25
|
+
};
|
26
|
+
/**
|
27
|
+
* The PowerShell commands to be tried, in order.
|
28
|
+
*
|
29
|
+
* @internal
|
30
|
+
*/
|
31
|
+
export declare const commandStack: string[];
|
32
|
+
/**
|
33
|
+
* This credential will use the currently logged-in user information from the
|
34
|
+
* Azure PowerShell module. To do so, it will read the user access token and
|
35
|
+
* expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`
|
36
|
+
*/
|
37
|
+
export declare class AzurePowerShellCredential implements TokenCredential {
|
38
|
+
private tenantId?;
|
39
|
+
private additionallyAllowedTenantIds;
|
40
|
+
private timeout?;
|
41
|
+
/**
|
42
|
+
* Creates an instance of the {@link AzurePowerShellCredential}.
|
43
|
+
*
|
44
|
+
* To use this credential:
|
45
|
+
* - Install the Azure Az PowerShell module with:
|
46
|
+
* `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.
|
47
|
+
* - You have already logged in to Azure PowerShell using the command
|
48
|
+
* `Connect-AzAccount` from the command line.
|
49
|
+
*
|
50
|
+
* @param options - Options, to optionally allow multi-tenant requests.
|
51
|
+
*/
|
52
|
+
constructor(options?: AzurePowerShellCredentialOptions);
|
53
|
+
/**
|
54
|
+
* Gets the access token from Azure PowerShell
|
55
|
+
* @param resource - The resource to use when getting the token
|
56
|
+
*/
|
57
|
+
private getAzurePowerShellAccessToken;
|
58
|
+
/**
|
59
|
+
* Authenticates with Microsoft Entra ID and returns an access token if successful.
|
60
|
+
* If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.
|
61
|
+
*
|
62
|
+
* @param scopes - The list of scopes for which the token will have access.
|
63
|
+
* @param options - The options used to configure any requests this TokenCredential implementation might make.
|
64
|
+
*/
|
65
|
+
getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken>;
|
66
|
+
}
|
67
|
+
/**
|
68
|
+
*
|
69
|
+
* @internal
|
70
|
+
*/
|
71
|
+
export declare function parseJsonToken(result: string): Promise<{
|
72
|
+
Token: string;
|
73
|
+
ExpiresOn: string;
|
74
|
+
}>;
|
75
|
+
//# sourceMappingURL=azurePowerShellCredential.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"azurePowerShellCredential.d.ts","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredential.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAStF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAS9F;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMzD;AAuBD;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;CAI5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;;CAKzC,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,YAAY,UAA0B,CAAC;AAMpD;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,4BAA4B,CAAW;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB;;;;;;;;;;OAUG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAWtD;;;OAGG;YACW,6BAA6B;IA2D3C;;;;;;OAMG;IACU,QAAQ,CACnB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC;CAwCxB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB/C"}
|
@@ -0,0 +1,229 @@
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
2
|
+
// Licensed under the MIT License.
|
3
|
+
import { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from "../util/tenantIdUtils.js";
|
4
|
+
import { credentialLogger, formatError, formatSuccess } from "../util/logging.js";
|
5
|
+
import { ensureValidScopeForDevTimeCreds, getScopeResource } from "../util/scopeUtils.js";
|
6
|
+
import { CredentialUnavailableError } from "../errors.js";
|
7
|
+
import { processUtils } from "../util/processUtils.js";
|
8
|
+
import { tracingClient } from "../util/tracing.js";
|
9
|
+
const logger = credentialLogger("AzurePowerShellCredential");
|
10
|
+
const isWindows = process.platform === "win32";
|
11
|
+
/**
|
12
|
+
* Returns a platform-appropriate command name by appending ".exe" on Windows.
|
13
|
+
*
|
14
|
+
* @internal
|
15
|
+
*/
|
16
|
+
export function formatCommand(commandName) {
|
17
|
+
if (isWindows) {
|
18
|
+
return `${commandName}.exe`;
|
19
|
+
}
|
20
|
+
else {
|
21
|
+
return commandName;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* Receives a list of commands to run, executes them, then returns the outputs.
|
26
|
+
* If anything fails, an error is thrown.
|
27
|
+
* @internal
|
28
|
+
*/
|
29
|
+
async function runCommands(commands, timeout) {
|
30
|
+
const results = [];
|
31
|
+
for (const command of commands) {
|
32
|
+
const [file, ...parameters] = command;
|
33
|
+
const result = (await processUtils.execFile(file, parameters, {
|
34
|
+
encoding: "utf8",
|
35
|
+
timeout,
|
36
|
+
}));
|
37
|
+
results.push(result);
|
38
|
+
}
|
39
|
+
return results;
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Known PowerShell errors
|
43
|
+
* @internal
|
44
|
+
*/
|
45
|
+
export const powerShellErrors = {
|
46
|
+
login: "Run Connect-AzAccount to login",
|
47
|
+
installed: "The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory",
|
48
|
+
};
|
49
|
+
/**
|
50
|
+
* Messages to use when throwing in this credential.
|
51
|
+
* @internal
|
52
|
+
*/
|
53
|
+
export const powerShellPublicErrorMessages = {
|
54
|
+
login: "Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.",
|
55
|
+
installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`,
|
56
|
+
troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,
|
57
|
+
};
|
58
|
+
// PowerShell Azure User not logged in error check.
|
59
|
+
const isLoginError = (err) => err.message.match(`(.*)${powerShellErrors.login}(.*)`);
|
60
|
+
// Az Module not Installed in Azure PowerShell check.
|
61
|
+
const isNotInstalledError = (err) => err.message.match(powerShellErrors.installed);
|
62
|
+
/**
|
63
|
+
* The PowerShell commands to be tried, in order.
|
64
|
+
*
|
65
|
+
* @internal
|
66
|
+
*/
|
67
|
+
export const commandStack = [formatCommand("pwsh")];
|
68
|
+
if (isWindows) {
|
69
|
+
commandStack.push(formatCommand("powershell"));
|
70
|
+
}
|
71
|
+
/**
|
72
|
+
* This credential will use the currently logged-in user information from the
|
73
|
+
* Azure PowerShell module. To do so, it will read the user access token and
|
74
|
+
* expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`
|
75
|
+
*/
|
76
|
+
export class AzurePowerShellCredential {
|
77
|
+
/**
|
78
|
+
* Creates an instance of the {@link AzurePowerShellCredential}.
|
79
|
+
*
|
80
|
+
* To use this credential:
|
81
|
+
* - Install the Azure Az PowerShell module with:
|
82
|
+
* `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.
|
83
|
+
* - You have already logged in to Azure PowerShell using the command
|
84
|
+
* `Connect-AzAccount` from the command line.
|
85
|
+
*
|
86
|
+
* @param options - Options, to optionally allow multi-tenant requests.
|
87
|
+
*/
|
88
|
+
constructor(options) {
|
89
|
+
if (options === null || options === void 0 ? void 0 : options.tenantId) {
|
90
|
+
checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId);
|
91
|
+
this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;
|
92
|
+
}
|
93
|
+
this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);
|
94
|
+
this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs;
|
95
|
+
}
|
96
|
+
/**
|
97
|
+
* Gets the access token from Azure PowerShell
|
98
|
+
* @param resource - The resource to use when getting the token
|
99
|
+
*/
|
100
|
+
async getAzurePowerShellAccessToken(resource, tenantId, timeout) {
|
101
|
+
// Clone the stack to avoid mutating it while iterating
|
102
|
+
for (const powerShellCommand of [...commandStack]) {
|
103
|
+
try {
|
104
|
+
await runCommands([[powerShellCommand, "/?"]], timeout);
|
105
|
+
}
|
106
|
+
catch (e) {
|
107
|
+
// Remove this credential from the original stack so that we don't try it again.
|
108
|
+
commandStack.shift();
|
109
|
+
continue;
|
110
|
+
}
|
111
|
+
const results = await runCommands([
|
112
|
+
[
|
113
|
+
powerShellCommand,
|
114
|
+
"-NoProfile",
|
115
|
+
"-NonInteractive",
|
116
|
+
"-Command",
|
117
|
+
`
|
118
|
+
$tenantId = "${tenantId !== null && tenantId !== void 0 ? tenantId : ""}"
|
119
|
+
$m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru
|
120
|
+
$useSecureString = $m.Version -ge [version]'2.17.0'
|
121
|
+
|
122
|
+
$params = @{
|
123
|
+
ResourceUrl = "${resource}"
|
124
|
+
}
|
125
|
+
|
126
|
+
if ($tenantId.Length -gt 0) {
|
127
|
+
$params["TenantId"] = $tenantId
|
128
|
+
}
|
129
|
+
|
130
|
+
if ($useSecureString) {
|
131
|
+
$params["AsSecureString"] = $true
|
132
|
+
}
|
133
|
+
|
134
|
+
$token = Get-AzAccessToken @params
|
135
|
+
|
136
|
+
$result = New-Object -TypeName PSObject
|
137
|
+
$result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn
|
138
|
+
if ($useSecureString) {
|
139
|
+
$result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token)
|
140
|
+
} else {
|
141
|
+
$result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token
|
142
|
+
}
|
143
|
+
|
144
|
+
Write-Output (ConvertTo-Json $result)
|
145
|
+
`,
|
146
|
+
],
|
147
|
+
]);
|
148
|
+
const result = results[0];
|
149
|
+
return parseJsonToken(result);
|
150
|
+
}
|
151
|
+
throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);
|
152
|
+
}
|
153
|
+
/**
|
154
|
+
* Authenticates with Microsoft Entra ID and returns an access token if successful.
|
155
|
+
* If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.
|
156
|
+
*
|
157
|
+
* @param scopes - The list of scopes for which the token will have access.
|
158
|
+
* @param options - The options used to configure any requests this TokenCredential implementation might make.
|
159
|
+
*/
|
160
|
+
async getToken(scopes, options = {}) {
|
161
|
+
return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {
|
162
|
+
const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds);
|
163
|
+
const scope = typeof scopes === "string" ? scopes : scopes[0];
|
164
|
+
if (tenantId) {
|
165
|
+
checkTenantId(logger, tenantId);
|
166
|
+
}
|
167
|
+
try {
|
168
|
+
ensureValidScopeForDevTimeCreds(scope, logger);
|
169
|
+
logger.getToken.info(`Using the scope ${scope}`);
|
170
|
+
const resource = getScopeResource(scope);
|
171
|
+
const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);
|
172
|
+
logger.getToken.info(formatSuccess(scopes));
|
173
|
+
return {
|
174
|
+
token: response.Token,
|
175
|
+
expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),
|
176
|
+
tokenType: "Bearer",
|
177
|
+
};
|
178
|
+
}
|
179
|
+
catch (err) {
|
180
|
+
if (isNotInstalledError(err)) {
|
181
|
+
const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);
|
182
|
+
logger.getToken.info(formatError(scope, error));
|
183
|
+
throw error;
|
184
|
+
}
|
185
|
+
else if (isLoginError(err)) {
|
186
|
+
const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);
|
187
|
+
logger.getToken.info(formatError(scope, error));
|
188
|
+
throw error;
|
189
|
+
}
|
190
|
+
const error = new CredentialUnavailableError(`${err}. ${powerShellPublicErrorMessages.troubleshoot}`);
|
191
|
+
logger.getToken.info(formatError(scope, error));
|
192
|
+
throw error;
|
193
|
+
}
|
194
|
+
});
|
195
|
+
}
|
196
|
+
}
|
197
|
+
/**
|
198
|
+
*
|
199
|
+
* @internal
|
200
|
+
*/
|
201
|
+
export async function parseJsonToken(result) {
|
202
|
+
const jsonRegex = /{[^{}]*}/g;
|
203
|
+
const matches = result.match(jsonRegex);
|
204
|
+
let resultWithoutToken = result;
|
205
|
+
if (matches) {
|
206
|
+
try {
|
207
|
+
for (const item of matches) {
|
208
|
+
try {
|
209
|
+
const jsonContent = JSON.parse(item);
|
210
|
+
if (jsonContent === null || jsonContent === void 0 ? void 0 : jsonContent.Token) {
|
211
|
+
resultWithoutToken = resultWithoutToken.replace(item, "");
|
212
|
+
if (resultWithoutToken) {
|
213
|
+
logger.getToken.warning(resultWithoutToken);
|
214
|
+
}
|
215
|
+
return jsonContent;
|
216
|
+
}
|
217
|
+
}
|
218
|
+
catch (e) {
|
219
|
+
continue;
|
220
|
+
}
|
221
|
+
}
|
222
|
+
}
|
223
|
+
catch (e) {
|
224
|
+
throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
throw new Error(`No access token found in the output. Received output: ${result}`);
|
228
|
+
}
|
229
|
+
//# sourceMappingURL=azurePowerShellCredential.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"azurePowerShellCredential.js","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,WAAW,MAAM,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,QAAoB,EAAE,OAAgB;IAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE;YAC5D,QAAQ,EAAE,MAAM;YAChB,OAAO;SACR,CAAC,CAAW,CAAC;QAEd,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,gCAAgC;IACvC,SAAS,EACP,uIAAuI;CAC1I,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,KAAK,EACH,8FAA8F;IAChG,SAAS,EAAE,4KAA4K;IACvL,YAAY,EAAE,4FAA4F;CAC3G,CAAC;AAEF,mDAAmD;AACnD,MAAM,YAAY,GAA4C,CAAC,GAAU,EAAE,EAAE,CAC3E,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,KAAK,MAAM,CAAC,CAAC;AAEzD,qDAAqD;AACrD,MAAM,mBAAmB,GAA4C,CAAC,GAAU,EAAE,EAAE,CAClF,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpD,IAAI,SAAS,EAAE,CAAC;IACd,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAKpC;;;;;;;;;;OAUG;IACH,YAAY,OAA0C;QACpD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACtB,aAAa,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,4BAA4B,GAAG,mCAAmC,CACrE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,CACpC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,6BAA6B,CACzC,QAAgB,EAChB,QAAiB,EACjB,OAAgB;QAEhB,uDAAuD;QACvD,KAAK,MAAM,iBAAiB,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,gFAAgF;gBAChF,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC;gBAChC;oBACE,iBAAiB;oBACjB,YAAY;oBACZ,iBAAiB;oBACjB,UAAU;oBACV;yBACe,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE;;;;;6BAKV,QAAQ;;;;;;;;;;;;;;;;;;;;;;WAsB1B;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,QAAQ,CACnB,MAAyB,EACzB,UAA2B,EAAE;QAE7B,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,CAAC,QAAQ,EACb,OAAO,EACP,IAAI,CAAC,4BAA4B,CAClC,CAAC;YACF,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC;gBACH,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5F,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5C,OAAO;oBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,kBAAkB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;oBAC1D,SAAS,EAAE,QAAQ;iBACL,CAAC;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;oBACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBAChD,MAAM,KAAK,CAAC;gBACd,CAAC;qBAAM,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;oBAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBAChD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAC1C,GAAG,GAAG,KAAK,6BAA6B,CAAC,YAAY,EAAE,CACxD,CAAC;gBACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc;IAEd,MAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,kBAAkB,GAAG,MAAM,CAAC;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC;wBACvB,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC1D,IAAI,kBAAkB,EAAE,CAAC;4BACvB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;wBAC9C,CAAC;wBACD,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils.js\";\n\nimport type { AzurePowerShellCredentialOptions } from \"./azurePowerShellCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport { processUtils } from \"../util/processUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\n\nconst isWindows = process.platform === \"win32\";\n\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nexport function formatCommand(commandName: string): string {\n if (isWindows) {\n return `${commandName}.exe`;\n } else {\n return commandName;\n }\n}\n\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands: string[][], timeout?: number): Promise<string[]> {\n const results: string[] = [];\n\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n })) as string;\n\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Known PowerShell errors\n * @internal\n */\nexport const powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed:\n \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexport const powerShellPublicErrorMessages = {\n login:\n \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n\n// PowerShell Azure User not logged in error check.\nconst isLoginError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(`(.*)${powerShellErrors.login}(.*)`);\n\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(powerShellErrors.installed);\n\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexport const commandStack = [formatCommand(\"pwsh\")];\n\nif (isWindows) {\n commandStack.push(formatCommand(\"powershell\"));\n}\n\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nexport class AzurePowerShellCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzurePowerShellCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n private async getAzurePowerShellAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ Token: string; ExpiresOn: string }> {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n } catch (e: any) {\n // Remove this credential from the original stack so that we don't try it again.\n commandStack.shift();\n continue;\n }\n\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n if ($useSecureString) {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value (ConvertFrom-SecureString -AsPlainText $token.Token)\n } else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise<AccessToken> {\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = getScopeResource(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n if (isNotInstalledError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);\n logger.getToken.info(formatError(scope, error));\n throw error;\n } else if (isLoginError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n const error = new CredentialUnavailableError(\n `${err}. ${powerShellPublicErrorMessages.troubleshoot}`,\n );\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n });\n }\n}\n\n/**\n *\n * @internal\n */\nexport async function parseJsonToken(\n result: string,\n): Promise<{ Token: string; ExpiresOn: string }> {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n } catch (e) {\n continue;\n }\n }\n } catch (e: any) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n"]}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import type { MultiTenantTokenCredentialOptions } from "./multiTenantTokenCredentialOptions.js";
|
2
|
+
/**
|
3
|
+
* Options for the {@link AzurePowerShellCredential}
|
4
|
+
*/
|
5
|
+
export interface AzurePowerShellCredentialOptions extends MultiTenantTokenCredentialOptions {
|
6
|
+
/**
|
7
|
+
* Allows specifying a tenant ID
|
8
|
+
*/
|
9
|
+
tenantId?: string;
|
10
|
+
/**
|
11
|
+
* Process timeout configurable for making token requests, provided in milliseconds
|
12
|
+
*/
|
13
|
+
processTimeoutInMs?: number;
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=azurePowerShellCredentialOptions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"azurePowerShellCredentialOptions.d.ts","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredentialOptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,iCAAiC;IACzF;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"azurePowerShellCredentialOptions.js","sourceRoot":"","sources":["../../../src/credentials/azurePowerShellCredentialOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions.js\";\n\n/**\n * Options for the {@link AzurePowerShellCredential}\n */\nexport interface AzurePowerShellCredentialOptions extends MultiTenantTokenCredentialOptions {\n /**\n * Allows specifying a tenant ID\n */\n tenantId?: string;\n /**\n * Process timeout configurable for making token requests, provided in milliseconds\n */\n processTimeoutInMs?: number;\n}\n"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type { BrokerOptions } from "../msal/nodeFlows/brokerOptions.js";
|
2
|
+
/**
|
3
|
+
* Configuration options for InteractiveBrowserCredential
|
4
|
+
* to support WAM Broker Authentication.
|
5
|
+
*/
|
6
|
+
export interface BrokerAuthOptions {
|
7
|
+
/**
|
8
|
+
* Options to allow broker authentication when using InteractiveBrowserCredential
|
9
|
+
*
|
10
|
+
*/
|
11
|
+
brokerOptions?: BrokerOptions;
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=brokerAuthOptions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"brokerAuthOptions.d.ts","sourceRoot":"","sources":["../../../src/credentials/brokerAuthOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAExE;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"brokerAuthOptions.js","sourceRoot":"","sources":["../../../src/credentials/brokerAuthOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { BrokerOptions } from \"../msal/nodeFlows/brokerOptions.js\";\n\n/**\n * Configuration options for InteractiveBrowserCredential\n * to support WAM Broker Authentication.\n */\n\nexport interface BrokerAuthOptions {\n /**\n * Options to allow broker authentication when using InteractiveBrowserCredential\n *\n */\n brokerOptions?: BrokerOptions;\n}\n"]}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/**
|
2
|
+
* Shared configuration options for browser customization
|
3
|
+
*/
|
4
|
+
export interface BrowserCustomizationOptions {
|
5
|
+
/**
|
6
|
+
* Shared configuration options for browser customization
|
7
|
+
*/
|
8
|
+
browserCustomizationOptions?: {
|
9
|
+
/**
|
10
|
+
* Format for error messages for display in browser
|
11
|
+
*/
|
12
|
+
errorMessage?: string;
|
13
|
+
/**
|
14
|
+
* Format for success messages for display in browser
|
15
|
+
*/
|
16
|
+
successMessage?: string;
|
17
|
+
};
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=browserCustomizationOptions.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"browserCustomizationOptions.d.ts","sourceRoot":"","sources":["../../../src/credentials/browserCustomizationOptions.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,2BAA2B,CAAC,EAAE;QAC5B;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"browserCustomizationOptions.js","sourceRoot":"","sources":["../../../src/credentials/browserCustomizationOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Shared configuration options for browser customization\n */\nexport interface BrowserCustomizationOptions {\n /**\n * Shared configuration options for browser customization\n */\n browserCustomizationOptions?: {\n /**\n * Format for error messages for display in browser\n */\n errorMessage?: string;\n /**\n * Format for success messages for display in browser\n */\n successMessage?: string;\n };\n}\n"]}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth";
|
2
|
+
/**
|
3
|
+
* @internal
|
4
|
+
*/
|
5
|
+
export declare const logger: import("../util/logging.js").CredentialLogger;
|
6
|
+
/**
|
7
|
+
* Enables multiple `TokenCredential` implementations to be tried in order until
|
8
|
+
* one of the getToken methods returns an access token. For more information, see
|
9
|
+
* [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).
|
10
|
+
*/
|
11
|
+
export declare class ChainedTokenCredential implements TokenCredential {
|
12
|
+
private _sources;
|
13
|
+
/**
|
14
|
+
* Creates an instance of ChainedTokenCredential using the given credentials.
|
15
|
+
*
|
16
|
+
* @param sources - `TokenCredential` implementations to be tried in order.
|
17
|
+
*
|
18
|
+
* Example usage:
|
19
|
+
* ```ts snippet:chained_token_credential_example
|
20
|
+
* import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity";
|
21
|
+
*
|
22
|
+
* const tenantId = "<tenant-id>";
|
23
|
+
* const clientId = "<client-id>";
|
24
|
+
* const clientSecret = "<client-secret>";
|
25
|
+
* const anotherClientId = "<another-client-id>";
|
26
|
+
* const anotherSecret = "<another-client-secret>";
|
27
|
+
*
|
28
|
+
* const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
|
29
|
+
* const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);
|
30
|
+
*
|
31
|
+
* const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);
|
32
|
+
* ```
|
33
|
+
*/
|
34
|
+
constructor(...sources: TokenCredential[]);
|
35
|
+
/**
|
36
|
+
* Returns the first access token returned by one of the chained
|
37
|
+
* `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}
|
38
|
+
* when one or more credentials throws an {@link AuthenticationError} and
|
39
|
+
* no credentials have returned an access token.
|
40
|
+
*
|
41
|
+
* This method is called automatically by Azure SDK client libraries. You may call this method
|
42
|
+
* directly, but you must also handle token caching and token refreshing.
|
43
|
+
*
|
44
|
+
* @param scopes - The list of scopes for which the token will have access.
|
45
|
+
* @param options - The options used to configure any requests this
|
46
|
+
* `TokenCredential` implementation might make.
|
47
|
+
*/
|
48
|
+
getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken>;
|
49
|
+
private getTokenInternal;
|
50
|
+
}
|
51
|
+
//# sourceMappingURL=chainedTokenCredential.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chainedTokenCredential.d.ts","sourceRoot":"","sources":["../../../src/credentials/chainedTokenCredential.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKtF;;GAEG;AACH,eAAO,MAAM,MAAM,+CAA6C,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,QAAQ,CAAyB;IAEzC;;;;;;;;;;;;;;;;;;;;OAoBG;gBACS,GAAG,OAAO,EAAE,eAAe,EAAE;IAIzC;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;YAKhF,gBAAgB;CAiD/B"}
|
@@ -0,0 +1,92 @@
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
2
|
+
// Licensed under the MIT License.
|
3
|
+
import { AggregateAuthenticationError, CredentialUnavailableError } from "../errors.js";
|
4
|
+
import { credentialLogger, formatError, formatSuccess } from "../util/logging.js";
|
5
|
+
import { tracingClient } from "../util/tracing.js";
|
6
|
+
/**
|
7
|
+
* @internal
|
8
|
+
*/
|
9
|
+
export const logger = credentialLogger("ChainedTokenCredential");
|
10
|
+
/**
|
11
|
+
* Enables multiple `TokenCredential` implementations to be tried in order until
|
12
|
+
* one of the getToken methods returns an access token. For more information, see
|
13
|
+
* [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).
|
14
|
+
*/
|
15
|
+
export class ChainedTokenCredential {
|
16
|
+
/**
|
17
|
+
* Creates an instance of ChainedTokenCredential using the given credentials.
|
18
|
+
*
|
19
|
+
* @param sources - `TokenCredential` implementations to be tried in order.
|
20
|
+
*
|
21
|
+
* Example usage:
|
22
|
+
* ```ts snippet:chained_token_credential_example
|
23
|
+
* import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity";
|
24
|
+
*
|
25
|
+
* const tenantId = "<tenant-id>";
|
26
|
+
* const clientId = "<client-id>";
|
27
|
+
* const clientSecret = "<client-secret>";
|
28
|
+
* const anotherClientId = "<another-client-id>";
|
29
|
+
* const anotherSecret = "<another-client-secret>";
|
30
|
+
*
|
31
|
+
* const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
|
32
|
+
* const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);
|
33
|
+
*
|
34
|
+
* const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);
|
35
|
+
* ```
|
36
|
+
*/
|
37
|
+
constructor(...sources) {
|
38
|
+
this._sources = [];
|
39
|
+
this._sources = sources;
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Returns the first access token returned by one of the chained
|
43
|
+
* `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}
|
44
|
+
* when one or more credentials throws an {@link AuthenticationError} and
|
45
|
+
* no credentials have returned an access token.
|
46
|
+
*
|
47
|
+
* This method is called automatically by Azure SDK client libraries. You may call this method
|
48
|
+
* directly, but you must also handle token caching and token refreshing.
|
49
|
+
*
|
50
|
+
* @param scopes - The list of scopes for which the token will have access.
|
51
|
+
* @param options - The options used to configure any requests this
|
52
|
+
* `TokenCredential` implementation might make.
|
53
|
+
*/
|
54
|
+
async getToken(scopes, options = {}) {
|
55
|
+
const { token } = await this.getTokenInternal(scopes, options);
|
56
|
+
return token;
|
57
|
+
}
|
58
|
+
async getTokenInternal(scopes, options = {}) {
|
59
|
+
let token = null;
|
60
|
+
let successfulCredential;
|
61
|
+
const errors = [];
|
62
|
+
return tracingClient.withSpan("ChainedTokenCredential.getToken", options, async (updatedOptions) => {
|
63
|
+
for (let i = 0; i < this._sources.length && token === null; i++) {
|
64
|
+
try {
|
65
|
+
token = await this._sources[i].getToken(scopes, updatedOptions);
|
66
|
+
successfulCredential = this._sources[i];
|
67
|
+
}
|
68
|
+
catch (err) {
|
69
|
+
if (err.name === "CredentialUnavailableError" ||
|
70
|
+
err.name === "AuthenticationRequiredError") {
|
71
|
+
errors.push(err);
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
logger.getToken.info(formatError(scopes, err));
|
75
|
+
throw err;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
if (!token && errors.length > 0) {
|
80
|
+
const err = new AggregateAuthenticationError(errors, "ChainedTokenCredential authentication failed.");
|
81
|
+
logger.getToken.info(formatError(scopes, err));
|
82
|
+
throw err;
|
83
|
+
}
|
84
|
+
logger.getToken.info(`Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`);
|
85
|
+
if (token === null) {
|
86
|
+
throw new CredentialUnavailableError("Failed to retrieve a valid token");
|
87
|
+
}
|
88
|
+
return { token, successfulCredential };
|
89
|
+
});
|
90
|
+
}
|
91
|
+
}
|
92
|
+
//# sourceMappingURL=chainedTokenCredential.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chainedTokenCredential.js","sourceRoot":"","sources":["../../../src/credentials/chainedTokenCredential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAGjC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,GAAG,OAA0B;QAvBjC,aAAQ,GAAsB,EAAE,CAAC;QAwBvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyB,EAAE,UAA2B,EAAE;QACrE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAyB,EACzB,UAA2B,EAAE;QAE7B,IAAI,KAAK,GAAuB,IAAI,CAAC;QACrC,IAAI,oBAAqC,CAAC;QAC1C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,OAAO,aAAa,CAAC,QAAQ,CAC3B,iCAAiC,EACjC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChE,IAAI,CAAC;oBACH,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAChE,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IACE,GAAG,CAAC,IAAI,KAAK,4BAA4B;wBACzC,GAAG,CAAC,IAAI,KAAK,6BAA6B,EAC1C,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC/C,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,4BAA4B,CAC1C,MAAM,EACN,+CAA+C,CAChD,CAAC;gBACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC/C,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,cAAc,oBAAoB,CAAC,WAAW,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,EAAE,CAChF,CAAC;YAEF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,0BAA0B,CAAC,kCAAkC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AggregateAuthenticationError, CredentialUnavailableError } from \"../errors.js\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\n/**\n * @internal\n */\nexport const logger = credentialLogger(\"ChainedTokenCredential\");\n\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order until\n * one of the getToken methods returns an access token. For more information, see\n * [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).\n */\nexport class ChainedTokenCredential implements TokenCredential {\n private _sources: TokenCredential[] = [];\n\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"<tenant-id>\";\n * const clientId = \"<client-id>\";\n * const clientSecret = \"<client-secret>\";\n * const anotherClientId = \"<another-client-id>\";\n * const anotherSecret = \"<another-client-secret>\";\n *\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n *\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources: TokenCredential[]) {\n this._sources = sources;\n }\n\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise<AccessToken> {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n\n private async getTokenInternal(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise<{ token: AccessToken; successfulCredential: TokenCredential }> {\n let token: AccessToken | null = null;\n let successfulCredential: TokenCredential;\n const errors: Error[] = [];\n\n return tracingClient.withSpan(\n \"ChainedTokenCredential.getToken\",\n options,\n async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n } catch (err: any) {\n if (\n err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\"\n ) {\n errors.push(err);\n } else {\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n }\n }\n\n if (!token && errors.length > 0) {\n const err = new AggregateAuthenticationError(\n errors,\n \"ChainedTokenCredential authentication failed.\",\n );\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n\n logger.getToken.info(\n `Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`,\n );\n\n if (token === null) {\n throw new CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n },\n );\n }\n}\n"]}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import type { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-auth";
|
2
|
+
import type { ClientAssertionCredentialOptions } from "./clientAssertionCredentialOptions.js";
|
3
|
+
/**
|
4
|
+
* Authenticates a service principal with a JWT assertion.
|
5
|
+
*/
|
6
|
+
export declare class ClientAssertionCredential implements TokenCredential {
|
7
|
+
private msalClient;
|
8
|
+
private tenantId;
|
9
|
+
private additionallyAllowedTenantIds;
|
10
|
+
private getAssertion;
|
11
|
+
private options;
|
12
|
+
/**
|
13
|
+
* Creates an instance of the ClientAssertionCredential with the details
|
14
|
+
* needed to authenticate against Microsoft Entra ID with a client
|
15
|
+
* assertion provided by the developer through the `getAssertion` function parameter.
|
16
|
+
*
|
17
|
+
* @param tenantId - The Microsoft Entra tenant (directory) ID.
|
18
|
+
* @param clientId - The client (application) ID of an App Registration in the tenant.
|
19
|
+
* @param getAssertion - A function that retrieves the assertion for the credential to use.
|
20
|
+
* @param options - Options for configuring the client which makes the authentication request.
|
21
|
+
*/
|
22
|
+
constructor(tenantId: string, clientId: string, getAssertion: () => Promise<string>, options?: ClientAssertionCredentialOptions);
|
23
|
+
/**
|
24
|
+
* Authenticates with Microsoft Entra ID and returns an access token if successful.
|
25
|
+
* If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.
|
26
|
+
*
|
27
|
+
* @param scopes - The list of scopes for which the token will have access.
|
28
|
+
* @param options - The options used to configure any requests this
|
29
|
+
* TokenCredential implementation might make.
|
30
|
+
*/
|
31
|
+
getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken>;
|
32
|
+
}
|
33
|
+
//# sourceMappingURL=clientAssertionCredential.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"clientAssertionCredential.d.ts","sourceRoot":"","sources":["../../../src/credentials/clientAssertionCredential.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQtF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAO9F;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,4BAA4B,CAAW;IAC/C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,OAAO,CAAmC;IAElD;;;;;;;;;OASG;gBAED,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACnC,OAAO,GAAE,gCAAqC;IAiChD;;;;;;;OAOG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;CAqB/F"}
|