UNPKG

@sungly/cognito-cli

Version:

CLI for all Cognito user life cycle management

176 lines (142 loc) 6.65 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var initiateSrpAuth = function () { var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(_ref2) { var username = _ref2.username, clientId = _ref2.clientId, clientSecret = _ref2.clientSecret, srpClient = _ref2.srpClient; var SRP_A, authParams, params; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: SRP_A = srpClient.calculateA(); authParams = { USERNAME: username, SRP_A: SRP_A }; params = { AuthFlow: 'USER_SRP_AUTH', ClientId: clientId, AuthParameters: (0, _util.addSecretHashToParams)({ params: authParams, clientId: clientId, clientSecret: clientSecret, username: username }) }; return _context.abrupt('return', _util.cognitoClient.initiateAuth(params).promise()); case 4: case 'end': return _context.stop(); } } }, _callee, this); })); return function initiateSrpAuth(_x) { return _ref3.apply(this, arguments); }; }(); exports.default = srpLogin; var _prompt = require('prompt'); var _prompt2 = _interopRequireDefault(_prompt); var _amazonUserPoolSrpClient = require('amazon-user-pool-srp-client'); var _config = require('../../config'); var _config2 = _interopRequireDefault(_config); var _util = require('../../util'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function responseToSrpAuth(_ref) { var ChallengeName = _ref.ChallengeName, ChallengeParameters = _ref.ChallengeParameters, userPoolId = _ref.userPoolId, clientId = _ref.clientId, clientSecret = _ref.clientSecret, password = _ref.password, srpClient = _ref.srpClient; var hkdf = srpClient.getPasswordAuthenticationKey(ChallengeParameters.USER_ID_FOR_SRP, password, ChallengeParameters.SRP_B, ChallengeParameters.SALT); var dateNow = (0, _amazonUserPoolSrpClient.getNowString)(); var signatureString = (0, _amazonUserPoolSrpClient.calculateSignature)(hkdf, userPoolId, ChallengeParameters.USER_ID_FOR_SRP, ChallengeParameters.SECRET_BLOCK, dateNow); var challengeResponses = { PASSWORD_CLAIM_SIGNATURE: signatureString, PASSWORD_CLAIM_SECRET_BLOCK: ChallengeParameters.SECRET_BLOCK, TIMESTAMP: dateNow, USERNAME: ChallengeParameters.USERNAME }; var params = { ClientId: clientId, ChallengeName: ChallengeName, ChallengeResponses: (0, _util.addSecretHashToParams)({ params: challengeResponses, clientId: clientId, clientSecret: clientSecret, username: ChallengeParameters.USERNAME }) }; return _util.cognitoClient.respondToAuthChallenge(params).promise(); } function srpLogin() { var _this = this; _prompt2.default.start(); _prompt2.default.get([{ name: 'username', required: true }, { name: 'password', hidden: true }], function () { var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(err, result) { var userPoolId, clientId, clientSecret, poolId, srpClient, _ref5, ChallengeName, ChallengeParameters, res; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _util.logger.info('message: Logging in...'); userPoolId = _config2.default.userPoolId, clientId = _config2.default.clientId, clientSecret = _config2.default.clientSecret; poolId = userPoolId.split('_')[1]; srpClient = new _amazonUserPoolSrpClient.SRPClient(poolId); _context2.prev = 4; _context2.next = 7; return initiateSrpAuth({ username: result.username, clientId: clientId, clientSecret: clientSecret, srpClient: srpClient }); case 7: _ref5 = _context2.sent; ChallengeName = _ref5.ChallengeName; ChallengeParameters = _ref5.ChallengeParameters; _context2.next = 12; return responseToSrpAuth({ ChallengeName: ChallengeName, ChallengeParameters: ChallengeParameters, userPoolId: poolId, clientId: clientId, clientSecret: clientSecret, username: result.username, password: result.password, srpClient: srpClient }); case 12: res = _context2.sent; _util.logger.info(res); _context2.next = 19; break; case 16: _context2.prev = 16; _context2.t0 = _context2['catch'](4); _util.logger.error(_context2.t0.message); case 19: case 'end': return _context2.stop(); } } }, _callee2, _this, [[4, 16]]); })); return function (_x2, _x3) { return _ref4.apply(this, arguments); }; }()); }