如何从 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 获取机器对机器的令牌

AWS Cognito - 如何从令牌对象获取用户组

使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理

无法使用 aws-amplify 从 cognito 获取更新的属性及其值

AWS + Serverless - 如何获取 cognito 用户池生成的密钥

AWS Lambda、API 网关和 Cognito:如何在 lambda 函数中获取身份对象?