У меня есть приложение Angular, которое использует SDK javascript AWS и может успешно войти в систему с Facebook и Google. Я могу создать идентификатор Cognito, и я вижу личность в моем пуле Federated Identity. Я также могу использовать свои конечные точки API, прошедшие аутентификацию IAM (я вижу пользовательский код в Lambda, который я звоню).Как получить адрес электронной почты аутентифицированного пользователя в node.js AWS Lambda?
Я хочу использовать адрес электронной почты пользователя в качестве ключа в базе данных (DynamoDB), поэтому я пытаюсь выяснить, как получить доступ к электронному адресу пользователя из надежного источника, либо Cognito (предпочтительно), либо провайдер аутентификации JWT.
Каков наилучший способ доступа к электронному адресу пользователя?
Обновление: На стороне клиента (javascript) Я использую федеративные идентификаторы с токенами Google и Facebook. Социальные Войти работаю, и я могу получить заверенный Cognito просто отлично, передавая логины:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:****',
Logins: {
'accounts.google.com': authResult['id_token']
}
});
тогда я AWS.config.credentials.get()
и я могу получить такие вещи, как AWS.config.credentials.identityId
, но я не могу найти или маркер доступа методы в звоните, чтобы получить JWT. Мне кажется, мне нужно позвонить result.getAccessToken().getJwtToken()
, но я не могу его найти.
Все примеры, в которых они получают доступ, похоже, используют .authenticateUser(authenticationDetails())
, но подробности включают имя пользователя и пароль (а не федеративный логин).
Спасибо, что нашли время, чтобы ответить. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не знаю, как получить accessToken. Я собираюсь обновить вопрос с помощью примера того, что я использую, чтобы получить учетные данные. Все примеры, которые я могу найти, похоже, используют учетные данные имени пользователя и пароля, тогда как я использую Federated Identities с поставщиками Google и Facebook. – destro