如何从 c# 中的 aws cognito 获取用户属性
Posted
技术标签:
【中文标题】如何从 c# 中的 aws cognito 获取用户属性【英文标题】:how to get the user attribute from aws cognito in c# 【发布时间】:2021-03-09 07:55:36 【问题描述】:我正在使用 AmazonCognitoIdentityProviderClient 开发工具包。 我正在尝试在 cognito 中为用户获取自定义属性。从 c# 前端我传递用户名、密码和电子邮件 ID。是否有任何功能可以从 cognito 检索用户属性?
【问题讨论】:
您是否成功登录并获得令牌(访问、我要和刷新)? 【参考方案1】:在 Cognito 成功对池中的用户进行身份验证后,您将收到多个 JWT - 一个访问令牌、一个 ID 令牌和一个刷新令牌。这些令牌可以在 SDK 返回的认证结果对象中访问(InitiateAuthResponse
)。
您可以验证和解码 ID 令牌以解压缩有关用户身份的声明。这还将包括您在用户池中定义的任何自定义属性。对于 .NET,您可以使用 JwtSecurityTokenHandler
解码 JWT(Sytem.IdentityModel.Tokens.Jwt
命名空间)。解码令牌后,访问Claims
属性获取用户信息。自定义属性以custom:
为前缀,而 Cognito 属性(如用户名)以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/
您还可以使用访问令牌直接使用开发工具包查找用户,AWS 开发工具包的响应将包含用户属性。这是相关文档:https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html
【讨论】:
【参考方案2】:试试Amazon.CognitoIdentityProvider.AmazonCognitoIdentityProviderClient.GetUserAsync()
,它将返回所有标准和自定义属性。请注意,该方法只会返回设置了值的属性。
【讨论】:
以上是关于如何从 c# 中的 aws cognito 获取用户属性的主要内容,如果未能解决你的问题,请参考以下文章
我如何从 AWS Cognito Api 获取机器对机器的令牌
使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理
无法使用 aws-amplify 从 cognito 获取更新的属性及其值