return 422 on instance id mismatch

the ui redirects otherwise
This commit is contained in:
Girish Ramakrishnan
2019-12-11 14:54:59 -08:00
parent a5f31e8724
commit 9dd3e4537a
+6 -6
View File
@@ -16,8 +16,8 @@ var assert = require('assert'),
HttpError = require('connect-lastmile').HttpError,
HttpSuccess = require('connect-lastmile').HttpSuccess,
provision = require('../provision.js'),
settings = require('../settings.js'),
superagent = require('superagent');
request = require('request'),
settings = require('../settings.js');
function providerTokenAuth(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
@@ -25,11 +25,11 @@ function providerTokenAuth(req, res, next) {
if (settings.provider() === 'ami') {
if (typeof req.body.providerToken !== 'string' || !req.body.providerToken) return next(new HttpError(400, 'providerToken must be a non empty string'));
superagent.get('http://169.254.169.254/latest/meta-data/instance-id').timeout(30 * 1000).end(function (error, result) {
if (error && !error.response) return next(new HttpError(500, error));
if (result.statusCode !== 200) return next(new HttpError(500, 'Unable to get meta data'));
request.get('http://169.254.169.254/latest/meta-data/instance-id', { timeout: 30 * 1000 }, function (error, result) {
if (error) return next(new HttpError(422, `Network error getting EC2 metadata: ${error.message}`));
if (result.statusCode !== 200) return next(new HttpError(422, `Unable to get EC2 meta data. statusCode: ${result.statusCode}`));
if (result.text !== req.body.providerToken) return next(new HttpError(401, 'Invalid providerToken'));
if (result.body !== req.body.providerToken) return next(new HttpError(422, 'Instance ID does not match'));
next();
});