как получить атрибут пользователя из aws cognito на c#

#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() , он вернет все стандартные и пользовательские атрибуты. Пожалуйста, обратите внимание, что метод будет возвращать только те атрибуты, для которых задано значение.