подробно изложив ответ @ doorstuck, если вы используете Lambda, вызванную APIG с авторизацией AWS_IAM. Затем, вы можете получить имя пользователя и другие атрибуты следующим образом:
event.requestContext.identity.cognitoAuthenticationProvider является строкой, которая выглядит как
«cognito-idp.ap-northeast-1.amazonaws.com/ ap-northeast-1_xxxxxxx, cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1_xxxxxx: CognitoSignIn: SSSSSSSS "
SSSSSSSS является вспомогательным элементом пользователя в пуле пользователей. Вы можете легко декодировать строку, чтобы получить суб и использовать ее в фильтре listUsers.
Пример:
const provider =
event.requestContext.identity.cognitoAuthenticationProvider;
const sub=provider.split(':')[2];
const Params = {
UserPoolId: 'xxxxxxxxx', /* required */
Filter: "sub=\""+ sub + "\"",
Limit: 1
};
cognitoidentityserviceprovider.listUsers(Params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data.Users[0].Attributes);
});
Данные включают в себя полезную информацию о возвращаемом пользователя, где data.Users [0] .Attributes имеет все атрибуты на пользователя. В результате
[ { Username: 'xxxxx',
Attributes: [Object],
UserCreateDate: 2017-09-12T04:52:50.589Z,
UserLastModifiedDate: 2017-10-24T01:50:00.109Z,
Enabled: true,
UserStatus: 'CONFIRMED' } ] }
data.Users [0] .Attributes является
[ { Name: 'sub', Value: 'SSSSSSS' },
{ Name: 'address', Value: 'xxxxxxxxi' },
{ Name: 'email_verified', Value: 'true' },
..... ]
Обратите внимание, что вы также можете фильтровать возвращаемые атрибуты, используя
AttributesToGet: [
'STRING_VALUE',
/* more items */
],
в Params.
Мне нужно получить это на заднем конце. Можете ли вы сделать предложение на заднем конце? –
@DukeDougal Мое предложение для бэкэнда. Посмотрите заголовок авторизации в бэкэнд.Это кодированный токен JWT, который вы можете декодировать и просматривать. Содержит полезные данные. – doorstuck