| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.MongoDBOIDC = exports.OIDC_WORKFLOWS = void 0;const error_1 = require("../../error");const auth_provider_1 = require("./auth_provider");const aws_service_workflow_1 = require("./mongodb_oidc/aws_service_workflow");const azure_service_workflow_1 = require("./mongodb_oidc/azure_service_workflow");const callback_workflow_1 = require("./mongodb_oidc/callback_workflow");/** Error when credentials are missing. */const MISSING_CREDENTIALS_ERROR = 'AuthContext must provide credentials.';/** @internal */exports.OIDC_WORKFLOWS = new Map();exports.OIDC_WORKFLOWS.set('callback', new callback_workflow_1.CallbackWorkflow());exports.OIDC_WORKFLOWS.set('aws', new aws_service_workflow_1.AwsServiceWorkflow());exports.OIDC_WORKFLOWS.set('azure', new azure_service_workflow_1.AzureServiceWorkflow());/** * OIDC auth provider. * @experimental */class MongoDBOIDC extends auth_provider_1.AuthProvider {    /**     * Instantiate the auth provider.     */    constructor() {        super();    }    /**     * Authenticate using OIDC     */    async auth(authContext) {        const { connection, reauthenticating, response } = authContext;        const credentials = getCredentials(authContext);        const workflow = getWorkflow(credentials);        await workflow.execute(connection, credentials, reauthenticating, response);    }    /**     * Add the speculative auth for the initial handshake.     */    async prepare(handshakeDoc, authContext) {        const credentials = getCredentials(authContext);        const workflow = getWorkflow(credentials);        const result = await workflow.speculativeAuth(credentials);        return { ...handshakeDoc, ...result };    }}exports.MongoDBOIDC = MongoDBOIDC;/** * Get credentials from the auth context, throwing if they do not exist. */function getCredentials(authContext) {    const { credentials } = authContext;    if (!credentials) {        throw new error_1.MongoMissingCredentialsError(MISSING_CREDENTIALS_ERROR);    }    return credentials;}/** * Gets either a device workflow or callback workflow. */function getWorkflow(credentials) {    const providerName = credentials.mechanismProperties.PROVIDER_NAME;    const workflow = exports.OIDC_WORKFLOWS.get(providerName || 'callback');    if (!workflow) {        throw new error_1.MongoInvalidArgumentError(`Could not load workflow for provider ${credentials.mechanismProperties.PROVIDER_NAME}`);    }    return workflow;}//# sourceMappingURL=mongodb_oidc.js.map
 |