Где хранить учетные данные шлюза API на веб-сайте AWS без сервера, обслуживаемого с S3? - PullRequest
0 голосов
/ 06 ноября 2018

В примере безсерверной архитектуры AWS S3 будет размещать статический веб-сайт, вызывая конечные точки шлюза API через javascript, который, в свою очередь, вызывает функции Lambda.

Как пройти проверку подлинности на шлюзе API AWS, не делая учетные данные общедоступными, сохранив их в общедоступном источнике JavaScript, обслуживаемом из S3?

(не спрашивая о внутренних учетных данных, они легко сохраняются (и шифруются) в переменных окружения, доступных для функций Lambda)

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Ваши пользователи обычно проходят аутентификацию, используя Cognito или какой-либо другой аутентификационный бэкэнд, обменивая свои учетные данные на токен JWT или эквивалентный ему, который используется для аутентификации в API Gateway. Вот пример задействованных шагов.

Также возможно поддерживать неаутентифицированных пользователей с Cognito.

Если существуют ситуации, когда необходимо, чтобы вызовы API Gateway выполнялись без аутентификации, см. этот ответ .

0 голосов
/ 06 ноября 2018

Вам необходимо получить токен со стороны клиента, используя стороннего поставщика удостоверений, который вы можете передать в API Gateway. Я лично использую Auth0 , который предоставляется бесплатно для двух провайдеров идентификации.

Легко интегрировать с одностраничным приложением (Angular / React / Vue) в один или несколько провайдеров идентификации , с хорошими примерами кода.

Также легко интегрировать проверку на стороне сервера токенов аутентификации в API Gateway с использованием Custom Authenticator. Ролевым доступом также можно управлять с помощью Расширения авторизации . Открытая часть веб-сайта может выполнять вызовы API для конечных точек API, которые не используют Custom Authenticator.

Вот хорошее руководство с веб-сайта Serverless Framework, которое показывает Стратегии реализации аутентификации пользователей в безсерверных приложениях , с рабочим примером на GitHub .

0 голосов
/ 06 ноября 2018

Лучше всего использовать что-то вроде AWS Cognito (не беспокоясь об управлении собственными серверами аутентификации).

В AWS Cognito вы можете просто предоставить неаутентифицированным пользователям доступ к вызову API. Для получения дополнительной информации см. Документы ( здесь и здесь ).

...