#c# #.net #amazon-web-services #amazon-cognito
#c# #.net #amazon-веб-сервисы #amazon-cognito
Вопрос:
Я использую AmazonCognitoIdentityProviderClient SDK. Я пытаюсь получить пользовательский атрибут для пользователя в cognito. из интерфейса c # я передаю имя пользователя, пароль и идентификатор электронной почты. есть ли какая-либо функция для извлечения атрибута пользователя из cognito?
Комментарии:
1. Успешно ли вы вошли в систему и получили токен (доступ, I’d и обновление)?
Ответ №1:
После того, как Cognito успешно аутентифицирует пользователя в вашем пуле, вы получите несколько JWT — токен доступа, токен ID и токен обновления. Доступ к этим токенам можно получить в объекте результата аутентификации, который возвращается SDK ( InitiateAuthResponse
).
Вы можете проверить и расшифровать токен ID, чтобы распаковать утверждения о личности пользователя. Сюда также будут включены любые пользовательские атрибуты, которые вы определили в своем пуле пользователей. Для .NET вы можете использовать JwtSecurityTokenHandler
для декодирования JWT ( Sytem.IdentityModel.Tokens.Jwt
пространство имен). После декодирования токена обратитесь к Claims
свойству, чтобы получить информацию о пользователе. Пользовательские атрибуты имеют префикс with custom:
, а атрибуты Cognito (например, имя пользователя) имеют префикс with cognito:
.
Вот документ AWS о том, как декодировать токен: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html
Вот пример использования JwtSecurityTokenHandler
: https://www.jerriepelser.com/blog/manually-validating-rs256-jwt-dotnet /
Вы также можете использовать токен доступа, чтобы использовать SDK для прямого поиска пользователя, и ответ из AWS SDK будет включать атрибуты пользователя. Вот документ об этом: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html
Ответ №2:
Попробуйте Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient.GetUserAsync()
, он вернет все стандартные и пользовательские атрибуты. Пожалуйста, обратите внимание, что метод будет возвращать только те атрибуты, для которых задано значение.