Skip to content

Instantly share code, notes, and snippets.

@junkangli
Created November 29, 2018 06:33
Show Gist options
  • Save junkangli/4afb538faa272a33231aea1aff35a489 to your computer and use it in GitHub Desktop.
Save junkangli/4afb538faa272a33231aea1aff35a489 to your computer and use it in GitHub Desktop.
This is an AWS Lambda function that implements Basic authentication scheme to control access to API methods in Amazon API Gateway. It is to be configured as an API Gatewy Lambda authorizer.
exports.handler = function(event, context, callback) {
const username = process.env['username'];
const password = process.env['password'];
var token = event.authorizationToken;
var encodedCreds = token.split(' ')[1];
var plainCreds = (new Buffer(encodedCreds, 'base64')).toString().split(':');
var p_username = plainCreds[0];
var p_password = plainCreds[1];
if (!(p_username === username && p_password === password)) {
return callback('Unauthorized');
}
let authResponse = {};
authResponse.principalId = username;
var policyDocument = {};
policyDocument.Version = '2012-10-17';
policyDocument.Statement = [];
var statementOne = {};
statementOne.Action = 'execute-api:Invoke';
statementOne.Effect = 'Allow';
statementOne.Resource = event.methodArn;
policyDocument.Statement[0] = statementOne;
authResponse.policyDocument = policyDocument;
callback(null, authResponse);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment