Идентификация пользователя в AWS Lambda - PullRequest
0 голосов
/ 06 сентября 2018

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

Я создал группу Cognito и подготовил HTML-страницу с JS, которая может регистрировать, подтверждать и входить в систему пользователей. Помимо всего прочего, я могу извлечь идентификационный токен.

Я также создал API в API-шлюзе, который подключен к функции Lambda. Настройка Авторизации для группы Cognito работает отлично, и функцию можно вызывать только с действительным токеном идентификации.

Однако я не знаю, как и могу ли я получить доступ к идентификатору в лямбда-функции таким образом. Флаг «Вызов с учетными данными вызывающего абонента» может быть установлен только с Авторизацией AWS_IAM. Это, в свою очередь, требует другой авторизации в HTTP-запросе, но я не знаю, что мне нужно там делать. Или я двигаюсь в совершенно неверном направлении?

В других потоках, например, https://forums.aws.amazon.com/thread.jspa?threadID=231032, и документации, в которой я нашел замечания по настройке шаблона отображения запросов, но я не нашел места в GUI, где я мог бы делать что-либо подобное.

Буду признателен за любую помощь в этом! Если какая-либо дополнительная информация может помочь, просто попросите ее, и я предоставлю столько, сколько смогу.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я наконец-то узнал личность вызывающего абонента через шаблоны сопоставления.

Чтобы использовать шаблоны сопоставления через формат JSON, вам необходимо добавить шаблон «application / json».Затем вы можете нажать на новую запись и предоставить конкретный шаблон.В моем случае я использовал

{
    "name": "$context.authorizer.claims.name",
    "username": "$context.authorizer.claims['cognito:username']"
}

. Это добавляет имя атрибута и имя пользователя к объекту события в лямбда-вызове, которые содержат содержимое имени атрибута и имени пользователя cognito соответственно.

0 голосов
/ 07 сентября 2018

Шаблоны сопоставления запросов можно найти в графическом интерфейсе в разделе Метод -> Ответ интеграции -> Шаблоны сопоставления.

Шаблон как:

{"testHeader" : "$input.params().header.get('Authorization')"}

передаст токен лямбде под заголовком testheader.

Может также стоить проверить переменную контекста (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference), чтобы узнать, содержит ли она требуемую информацию, хотя я не верю, что это произойдет, если вы не перейдете к методу аутентификации Custom Authorizer.

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