/* * Copyright DataStax, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; const util = require('util'); const provider = require('./provider.js'); const utils = require('../utils'); const AuthProvider = provider.AuthProvider; const Authenticator = provider.Authenticator; /** * Creates a new instance of the Authenticator provider * @classdesc Provides plain text [Authenticator]{@link module:auth~Authenticator} instances to be used when * connecting to a host. * @extends module:auth~AuthProvider * @example * var authProvider = new cassandra.auth.PlainTextAuthProvider('my_user', 'p@ssword1!'); * //Set the auth provider in the clientOptions when creating the Client instance * const client = new Client({ contactPoints: contactPoints, authProvider: authProvider }); * @param {String} username User name in plain text * @param {String} password Password in plain text * @alias module:auth~PlainTextAuthProvider * @constructor */ function PlainTextAuthProvider(username, password) { this.username = username; this.password = password; } util.inherits(PlainTextAuthProvider, AuthProvider); /** * Returns a new [Authenticator]{@link module:auth~Authenticator} instance to be used for plain text authentication. * @override * @returns {Authenticator} */ PlainTextAuthProvider.prototype.newAuthenticator = function () { return new PlainTextAuthenticator(this.username, this.password); }; /** * @ignore */ function PlainTextAuthenticator(username, password) { this.username = username; this.password = password; } util.inherits(PlainTextAuthenticator, Authenticator); PlainTextAuthenticator.prototype.initialResponse = function (callback) { const initialToken = Buffer.concat([ utils.allocBufferFromArray([0]), utils.allocBufferFromString(this.username, 'utf8'), utils.allocBufferFromArray([0]), utils.allocBufferFromString(this.password, 'utf8') ]); callback(null, initialToken); }; PlainTextAuthenticator.prototype.evaluateChallenge = function (challenge, callback) { //noop callback(); }; module.exports = { PlainTextAuthenticator, PlainTextAuthProvider, };