UNPKG

botbuilder-core

Version:

Core components for Microsoft Bot Builder. Components in this library can run either in a browser or on the server.

146 lines 9.13 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createServiceClientCredentialFactoryFromConfiguration = exports.ConfigurationServiceClientCredentialFactory = void 0; const z = __importStar(require("zod")); const assert_1 = require("assert"); const botframework_connector_1 = require("botframework-connector"); const MultiTenant = 'MultiTenant'; const SingleTenant = 'SingleTenant'; const UserAssignedMsi = 'UserAssignedMsi'; const TypedConfig = z .object({ /** * The ID assigned to your bot in the [Bot Framework Portal](https://dev.botframework.com/). */ MicrosoftAppId: z.string(), /** * The password assigned to your bot in the [Bot Framework Portal](https://dev.botframework.com/). */ MicrosoftAppPassword: z.string(), /** * The type of app id assigned to your bot in the [Bot Framework Portal](https://dev.botframework.com/). */ MicrosoftAppType: z.string(), /** * The tenant id assigned to your bot in the [Bot Framework Portal](https://dev.botframework.com/). */ MicrosoftAppTenantId: z.string(), /** * Certificate thumbprint to authenticate the appId against AAD. */ [botframework_connector_1.AuthenticationConstants.CertificateThumbprint]: z.string(), /** * Certificate key to authenticate the appId against AAD. */ [botframework_connector_1.AuthenticationConstants.CertificatePrivateKey]: z.string(), }) .partial(); /** * ServiceClientCredentialsFactory that uses a [ConfigurationServiceClientCredentialFactoryOptions](xref:botbuilder-core.ConfigurationServiceClientCredentialFactoryOptions) or a [Configuration](xref:botbuilder-dialogs-adaptive-runtime-core.Configuration) instance to build ServiceClientCredentials with an AppId and App Password. */ class ConfigurationServiceClientCredentialFactory extends botframework_connector_1.PasswordServiceClientCredentialFactory { /** * Initializes a new instance of the [ConfigurationServiceClientCredentialFactory](xref:botbuilder-core.ConfigurationServiceClientCredentialFactory) class. * * @param factoryOptions A [ConfigurationServiceClientCredentialFactoryOptions](xref:botbuilder-core.ConfigurationServiceClientCredentialFactoryOptions) object. */ constructor(factoryOptions = {}) { var _a; const { MicrosoftAppId = null, MicrosoftAppPassword = null, MicrosoftAppType = null, MicrosoftAppTenantId = null, [botframework_connector_1.AuthenticationConstants.CertificateThumbprint]: CertificateThumbprint = null, [botframework_connector_1.AuthenticationConstants.CertificatePrivateKey]: CertificatePrivateKey = null, } = TypedConfig.nonstrict().parse(factoryOptions); super(MicrosoftAppId, MicrosoftAppPassword, MicrosoftAppTenantId); const appType = (_a = MicrosoftAppType === null || MicrosoftAppType === void 0 ? void 0 : MicrosoftAppType.trim()) !== null && _a !== void 0 ? _a : MultiTenant; const withCertificate = CertificateThumbprint || CertificatePrivateKey; if (withCertificate) { (0, assert_1.ok)(CertificateThumbprint === null || CertificateThumbprint === void 0 ? void 0 : CertificateThumbprint.trim(), 'CertificateThumbprint is required when using a Certificate in configuration.'); (0, assert_1.ok)(CertificatePrivateKey === null || CertificatePrivateKey === void 0 ? void 0 : CertificatePrivateKey.trim(), 'CertificatePrivateKey is required when using a Certificate in configuration.'); } switch (appType.toLocaleLowerCase()) { case UserAssignedMsi.toLocaleLowerCase(): (0, assert_1.ok)(MicrosoftAppId === null || MicrosoftAppId === void 0 ? void 0 : MicrosoftAppId.trim(), 'MicrosoftAppId is required for MSI in configuration.'); (0, assert_1.ok)(MicrosoftAppTenantId === null || MicrosoftAppTenantId === void 0 ? void 0 : MicrosoftAppTenantId.trim(), 'MicrosoftAppTenantId is required for MSI in configuration.'); (0, assert_1.ok)(!(MicrosoftAppPassword === null || MicrosoftAppPassword === void 0 ? void 0 : MicrosoftAppPassword.trim()), 'MicrosoftAppPassword must not be set for MSI in configuration.'); this.inner = new botframework_connector_1.ManagedIdentityServiceClientCredentialsFactory(MicrosoftAppId, new botframework_connector_1.JwtTokenProviderFactory()); break; case SingleTenant.toLocaleLowerCase(): (0, assert_1.ok)(MicrosoftAppId === null || MicrosoftAppId === void 0 ? void 0 : MicrosoftAppId.trim(), 'MicrosoftAppId is required for SingleTenant in configuration.'); (0, assert_1.ok)(MicrosoftAppTenantId === null || MicrosoftAppTenantId === void 0 ? void 0 : MicrosoftAppTenantId.trim(), 'MicrosoftAppTenantId is required for SingleTenant in configuration.'); if (withCertificate) { this.inner = new botframework_connector_1.CertificateServiceClientCredentialsFactory(MicrosoftAppId, CertificateThumbprint, CertificatePrivateKey, MicrosoftAppTenantId); } else { (0, assert_1.ok)(MicrosoftAppPassword === null || MicrosoftAppPassword === void 0 ? void 0 : MicrosoftAppPassword.trim(), 'MicrosoftAppPassword is required for SingleTenant in configuration.'); this.inner = new botframework_connector_1.PasswordServiceClientCredentialFactory(MicrosoftAppId, MicrosoftAppPassword, MicrosoftAppTenantId); } break; default: //MultiTenant if (withCertificate) { (0, assert_1.ok)(MicrosoftAppId === null || MicrosoftAppId === void 0 ? void 0 : MicrosoftAppId.trim(), 'MicrosoftAppId is required for MultiTenant when using a Certificate in configuration.'); this.inner = new botframework_connector_1.CertificateServiceClientCredentialsFactory(MicrosoftAppId, CertificateThumbprint, CertificatePrivateKey); } else { this.inner = new botframework_connector_1.PasswordServiceClientCredentialFactory(MicrosoftAppId, MicrosoftAppPassword, ''); } break; } } /** * @inheritdoc */ isValidAppId(microsoftAppId) { return this.inner.isValidAppId(microsoftAppId); } /** * @inheritdoc */ isAuthenticationDisabled() { return this.inner.isAuthenticationDisabled(); } /** * @inheritdoc */ createCredentials(microsoftAppId, audience, loginEndpoint, validateAuthority) { return this.inner.createCredentials(microsoftAppId, audience, loginEndpoint, validateAuthority); } } exports.ConfigurationServiceClientCredentialFactory = ConfigurationServiceClientCredentialFactory; /** * Creates a new instance of the [ConfigurationServiceClientCredentialFactory](xref:botbuilder-core.ConfigurationServiceClientCredentialFactory) class. * * @remarks * The [Configuration](xref:botbuilder-dialogs-adaptive-runtime-core.Configuration) instance provided to the constructor should * have the desired authentication values available at the root, using the properties of [ConfigurationServiceClientCredentialFactoryOptions](xref:botbuilder-core.ConfigurationServiceClientCredentialFactoryOptions) as its keys. * @param configuration A [Configuration](xref:botbuilder-dialogs-adaptive-runtime-core.Configuration) instance. * @returns A [ConfigurationServiceClientCredentialFactory](xref:botbuilder-core.ConfigurationServiceClientCredentialFactory) instance. */ function createServiceClientCredentialFactoryFromConfiguration(configuration) { const factoryOptions = configuration.get(); return new ConfigurationServiceClientCredentialFactory(factoryOptions); } exports.createServiceClientCredentialFactoryFromConfiguration = createServiceClientCredentialFactoryFromConfiguration; //# sourceMappingURL=configurationServiceClientCredentialFactory.js.map