Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Basic HTTP Authentication for CloudFront with Lambda@Edge
'use strict';
exports.handler = (event, context, callback) => {
// Get request and request headers
const request = event.Records[0].cf.request;
const headers = request.headers;
// Configure authentication
const authUser = 'user';
const authPass = 'pass';
// Construct the Basic Auth string
const authString = 'Basic ' + new Buffer(authUser + ':' + authPass).toString('base64');
// Require Basic authentication
if (typeof headers.authorization == 'undefined' || headers.authorization[0].value != authString) {
const body = 'Unauthorized';
const response = {
status: '401',
statusDescription: 'Unauthorized',
body: body,
headers: {
'www-authenticate': [{key: 'WWW-Authenticate', value:'Basic'}]
},
};
callback(null, response);
}
// Continue request processing if authentication passed
callback(null, request);
};
Owner

lmakarov commented Aug 30, 2017

See my article on Medium for details.

homaily commented Jan 16, 2018

Thanks Leonid for sharing this.

Lines 8 to 13 if moved before the function (before line 2) it will be parsed just once and cached in memory for next executions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment