Базовая аутентификация пользователя для статического сайта с использованием AWS & S3 Bucket - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу добавить обычную аутентификацию пользователя на статический сайт, который у меня будет на AWS, чтобы только те, у кого есть правильное имя пользователя и пароль, которые я предоставлю этим пользователям, имели доступ к сайту. Я нашел s3auth, и, похоже, это именно то, что я ищу, однако мне интересно, нужно ли мне каким-то образом устанавливать авторизацию для страниц, кроме index.html. Например, у меня есть 3 страницы - index, about и contact.html, без настройки аутентификации для about.html, что мешает человеку получить прямой доступ к сайту через www.mywebsite.com/about.html? Я больше ищу разъяснений или любые ресурсы, которые кто-нибудь может предоставить, чтобы объяснить это!

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 27 апреля 2019

Это идеальное использование для Lambda@Edge.

Поскольку вы закрываете свой статический сайт на S3, вы можете легко и очень экономно (копейки) добавить некоторые действительно замечательные функции на свой сайт с помощью CloudFront, Сеть распространения контента AWS, чтобы обслуживать ваш сайт на ваш сайт.Вы можете узнать, как настроить размещение вашего сайта на S3 с CloudFront (включая 100% бесплатный SSL) здесь .

Пока развертывание вашего CloudFront развертывается, у вас будет некоторое время для настройкиВы лямбда, которую вы будете использовать, чтобы выполнить базовую аутентификацию пользователя.Если вы впервые создаете Lambda или Lambda для использования @Edge, процесс будет казаться очень сложным, но если вы будете следовать моим пошаговым инструкциям, приведенным ниже, вы будете выполнять бессерверную базовую аутентификацию, которая будет бесконечной.масштабируется менее чем за 10 минут.Я собираюсь использовать us-east-1 для этого, и важно знать, что если вы используете Lambda @ Edge, вы должны создавать свои функции в us-east-1, и когда они связаны с вашим дистрибутивом CloudFront, ониБуду автоматически реплицироваться во всем мире.Давайте начнем ...

  1. Перейдите к Lambda в консоли AWS и нажмите " Создать функцию "
  2. Создайте свою Lambda с нуля и дайте ейимя
  3. Установите для среды выполнения Node.js 8.10
  4. Дайте Lambda некоторые разрешения, выбрав «Выбрать или создать роль выполнения»
  5. Присвойте роли имя
  6. В шаблонах политик выберите «Базовые полномочия Lambda @ Edge (для триггера CloudFront)»
  7. Нажмите «Создать функцию»
  8. После создания лямбда-кода возьмите следующий код и вставьте его вв файл index.js раздела Function Code - вы можете обновить имя пользователя и пароль, которые хотите использовать, изменив переменные authUser и authPass:
'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);
};

Нажмите «Сохранить» в правом верхнем углу. Теперь, когда ваша Lambda сохранена, она готова к подключению к вашему дистрибутиву CloudFront.В верхнем меню выберите Действия -> Развернуть на Lambda@Edge. . В появившемся модале выберите созданный ранее дистрибутив CloudFront из раскрывающегося меню, оставьте Поведение кэша как *, а для CloudFront -Событие измените его на «Запрос зрителя» и, наконец, выберите / отметьте «Включить тело».Выберите / установите флажок Подтвердить развертывание в Lambda @ Edge и нажмите «Развернуть».

А теперь подождите.Репликация Lambda @ Edge занимает несколько минут (15-20) во всех регионах и краях.Перейдите в CloudFront, чтобы отслеживать развертывание вашей функции.Когда ваш статус распространения CloudFront сообщает «Развернуто», ваша функция Lambda @ Edge готова к использованию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...