AWS Lambda - Невозможно получить пользовательские данные Cognito в лямбда-функции - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить пользовательские данные Cognito в лямбда-функции.Я пытаюсь передать его в лямбду, используя body mapping template как

{
    "cognito-authentication-provider" : "$context.identity.cognitoAuthenticationProvider",
    "cognito-authentication-type" : "$context.identity.cognitoAuthenticationType",
    "cognito-identity-id" : "$context.identity.cognitoIdentityId",
    "cognito-identity-pool-id" : "$context.identity.cognitoIdentityPoolId",
}

Но в функции лямбда-данных данные пустые как

'cognito-authentication-provider': '',
'cognito-authentication-type': '',
'cognito-identity-id': '',
'cognito-identity-pool-id': ''

Пожалуйста, помогите мне решить эту проблему.

Спасибо ...

РЕДАКТИРОВАТЬ: Добавлена ​​аутентификация Cognito dev-dummy-auth как enter image description here

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Чтобы построить ответ Дилипа Колы.Похоже, что контекстные переменные, к которым вы пытаетесь получить доступ, не существуют для используемого вами метода авторизации.

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

Вы можете передать токен, добавив строку в свой шаблон отображения тела.

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

A CognitoИдентификационный токен имеет вид JWT (JSON Web Token).Заявка ISS имеет формат https://cognito-idp.{region}.amazonaws.com/{userPoolId}.

Обновление - включение информации о группах пользователей

Маркер Cognito Identity не содержит группы пользователейпользователь, которому был выдан токен.

Чтобы ограничить доступ API для отдельных лиц в определенных группах пользователей, вам придется изменить метод аутентификации на AWS_IAM Authorizer с использованием федеративных идентификаторов Cognito.

использовать пользовательский атрибут, такой как роль в Cognito, помечая определенных пользователей как Admin, User и т. д. (как они могут быть переданы в токене id), а затем оценивать этот пользовательский атрибут.Если вы собираетесь пойти по этому пути, я бы перешел к методу аутентификации Custom Lambda Authorizer.Таким образом, вы можете проверять пользовательские атрибуты одновременно с проверкой токена, чтобы запросы никогда не доходили до бэкэнда, если у пользователя нет правильных прав доступа.

0 голосов
/ 12 июня 2018

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference Вы ссылаетесь на переменные контекста для запроса API с использованием учетных данных пула идентификаторов Cognito. Когда вы используете авторизатор пула пользователей Cognito, они не будут доступны.

...