/
Stameskaaa
/
Server
Обзор
Документация
Войти
/
Stameskaaa
/
Server
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
node_modules/mongodb/src/cmap/auth/mongocr.ts
38 строк
1 KB
Stameskaaa
first
19 июн 2024, 15:02
19 июн 2024, 15:02
ac1472e
Код
Авторство
О чём код?
import * as crypto from 'crypto'; import { MongoMissingCredentialsError } from '../../error'; import { ns } from '../../utils'; import { type AuthContext, AuthProvider } from './auth_provider'; export class MongoCR extends AuthProvider { override async auth(authContext: AuthContext): Promise<void> { const { connection, credentials } = authContext; if (!credentials) { throw new MongoMissingCredentialsError('AuthContext must provide credentials.'); } const { username, password, source } = credentials; const { nonce } = await connection.command(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.command(ns(`${source}.$cmd`), authenticateCommand, undefined); } }