1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- "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 {
- auth(authContext, callback) {
- const { connection, credentials } = authContext;
- if (!credentials) {
- return callback(new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.'));
- }
- const username = credentials.username;
- const password = credentials.password;
- const source = credentials.source;
- connection.command((0, utils_1.ns)(`${source}.$cmd`), { getnonce: 1 }, undefined, (err, r) => {
- let nonce = null;
- let key = null;
- // Get nonce
- if (err == null) {
- nonce = r.nonce;
- // Use node md5 generator
- let md5 = crypto.createHash('md5');
- // Generate keys used for authentication
- md5.update(`${username}:mongo:${password}`, 'utf8');
- const hash_password = md5.digest('hex');
- // Final key
- md5 = crypto.createHash('md5');
- md5.update(nonce + username + hash_password, 'utf8');
- key = md5.digest('hex');
- }
- const authenticateCommand = {
- authenticate: 1,
- user: username,
- nonce,
- key
- };
- connection.command((0, utils_1.ns)(`${source}.$cmd`), authenticateCommand, undefined, callback);
- });
- }
- }
- exports.MongoCR = MongoCR;
- //# sourceMappingURL=mongocr.js.map
|