You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					39 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					39 lines
				
				1.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								exports.X509 = void 0;
							 | 
						||
| 
								 | 
							
								const error_1 = require("../../error");
							 | 
						||
| 
								 | 
							
								const utils_1 = require("../../utils");
							 | 
						||
| 
								 | 
							
								const auth_provider_1 = require("./auth_provider");
							 | 
						||
| 
								 | 
							
								class X509 extends auth_provider_1.AuthProvider {
							 | 
						||
| 
								 | 
							
								    prepare(handshakeDoc, authContext, callback) {
							 | 
						||
| 
								 | 
							
								        const { credentials } = authContext;
							 | 
						||
| 
								 | 
							
								        if (!credentials) {
							 | 
						||
| 
								 | 
							
								            return callback(new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.'));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        Object.assign(handshakeDoc, {
							 | 
						||
| 
								 | 
							
								            speculativeAuthenticate: x509AuthenticateCommand(credentials)
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        callback(undefined, handshakeDoc);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    auth(authContext, callback) {
							 | 
						||
| 
								 | 
							
								        const connection = authContext.connection;
							 | 
						||
| 
								 | 
							
								        const credentials = authContext.credentials;
							 | 
						||
| 
								 | 
							
								        if (!credentials) {
							 | 
						||
| 
								 | 
							
								            return callback(new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.'));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        const response = authContext.response;
							 | 
						||
| 
								 | 
							
								        if (response && response.speculativeAuthenticate) {
							 | 
						||
| 
								 | 
							
								            return callback();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        connection.command((0, utils_1.ns)('$external.$cmd'), x509AuthenticateCommand(credentials), undefined, callback);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.X509 = X509;
							 | 
						||
| 
								 | 
							
								function x509AuthenticateCommand(credentials) {
							 | 
						||
| 
								 | 
							
								    const command = { authenticate: 1, mechanism: 'MONGODB-X509' };
							 | 
						||
| 
								 | 
							
								    if (credentials.username) {
							 | 
						||
| 
								 | 
							
								        command.user = credentials.username;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return command;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=x509.js.map
							 |