1234567891011121314151617181920212223242526272829303132333435 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.MongoCR = void 0;
- const crypto = require("crypto");
- const error_1 = require("../../error");
- const utils_1 = require("../../utils");
- const auth_provider_1 = require("./auth_provider");
- class MongoCR extends auth_provider_1.AuthProvider {
- async auth(authContext) {
- const { connection, credentials } = authContext;
- if (!credentials) {
- throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
- }
- const { username, password, source } = credentials;
- const { nonce } = await connection.commandAsync((0, utils_1.ns)(`${source}.$cmd`), { getnonce: 1 }, undefined);
- const hashPassword = crypto
- .createHash('md5')
- .update(`${username}:mongo:${password}`, 'utf8')
- .digest('hex');
- // Final key
- const key = crypto
- .createHash('md5')
- .update(`${nonce}${username}${hashPassword}`, 'utf8')
- .digest('hex');
- const authenticateCommand = {
- authenticate: 1,
- user: username,
- nonce,
- key
- };
- await connection.commandAsync((0, utils_1.ns)(`${source}.$cmd`), authenticateCommand, undefined);
- }
- }
- exports.MongoCR = MongoCR;
- //# sourceMappingURL=mongocr.js.map
|