Как получить информацию о пользователе, прошедшем проверку подлинности Cognito, в функции AWS Lambda? - PullRequest
0 голосов
/ 02 июля 2018

Я разрабатываю серверный бэкэнд для моего приложения Angular.

Пользователи проходят аутентификацию с использованием AWS Cognito и могут получать доступ к функциям AWS Lambda через API-шлюз (используя SDK, сгенерированный через консоль API-шлюза).

Вопрос: Как получить информацию о том, какой пользователь вызывает лямбда-функцию? Лямбда-функции используют python & boto3.

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

Ответы [ 2 ]

0 голосов
/ 09 июля 2018

Я делаю то же самое - использую пул пользователей для аутентификации, а затем использую id_token для генерации федеративного удостоверения, которое я использую для доступа к шлюзу API, подключенному к Lambda. Журналы CloudWatch для лямбды показывают детали, передаваемые в event.requestContext.identity . Этот объект имеет следующее -

"identity": {
        "cognitoIdentityPoolId": xxxx,
        "accountId": xxxxx,
        "cognitoIdentityId": xxxxxx,
        "caller": "xxxxxx:CognitoIdentityCredentials",
        "sourceIp": "x.x.x.x",
        "accessKey": "xxxxx",
        "cognitoAuthenticationType": "authenticated",
        "cognitoAuthenticationProvider": "********",
        "userArn": "*********",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
        "user": "xxxxxx:CognitoIdentityCredentials"
    }

Это частичный ответ, так как мне еще предстоит выяснить, как использовать вышеуказанную информацию, чтобы узнать, какой пользователь действительно вошел в систему.

Пожалуйста, поделитесь ответом, если он у вас получился.

PS: это была лямбда-нода

0 голосов
/ 03 июля 2018

API Gateway недавно запустил поддержку Cognito User Pool Authorizer. Как только ваши методы API настроены с Cognito User Пул авторизатор, вы можете передать неиспользованный токен ID в Авторизацию заголовок к вашим методам API.

Если это действительный идентификационный токен для пользователя вашего пула пользователей, вы можете получить доступ ко всем утверждениям ID Token в вашем API, используя «$ context.authorizer.claims».

Например, $ context.authorizer.claims.email вернет пользовательские адрес электронной почты и «$ context.authorizer.claims.sub» вернут вас уникальный идентификатор пользователя.

Если идентификатор токена истек или недействителен, Cognito User Pool Authorizer отправит несанкционированный (401) ответ звонящему.

Как вы можете прочитать из их публикации, вы можете получить претензии из неистекшего идентификационного токена заголовка авторизации.

...