Asp.net 更新AWS Cognito用户';s自定义属性,而无需用户登录

Asp.net 更新AWS Cognito用户';s自定义属性,而无需用户登录,asp.net,asp.net-core,amazon-cognito,Asp.net,Asp.net Core,Amazon Cognito,我正在做一个新项目,我第一次同时使用Vue js和AWS Cognito。我发现cognito文档很难找到,或者只是丢失了 在Vue应用程序中,我使用Amplify处理所有用户管理,这些管理工作正常 在我的用户池中,我添加了2个自定义属性: 自定义:名字 自定义:姓氏 在Vue应用程序中,我向一个.net核心api发布了一个报价请求,该api包含各种详细信息,以及登录用户的cognito用户名、名字和姓氏: { "details": "all kinds of quote detai

我正在做一个新项目,我第一次同时使用Vue js和AWS Cognito。我发现cognito文档很难找到,或者只是丢失了

在Vue应用程序中,我使用Amplify处理所有用户管理,这些管理工作正常

在我的用户池中,我添加了2个自定义属性:

  • 自定义:名字
  • 自定义:姓氏
在Vue应用程序中,我向一个.net核心api发布了一个报价请求,该api包含各种详细信息,以及登录用户的cognito用户名、名字和姓氏:

{
    "details": "all kinds of quote details",
    "user": {
        "cognitoUsername": "fd17f624-cf31-11e9-904a-88d7f67d5c52",
        "firstName": "Carel",
        "lastName": "Nel"
    }
}
使用
Amazon.Extensions.CognitoAuthentication
库,我能够查询cognito用户记录及其所有属性:

cognitoUser = await _pool.FindByIdAsync(model.User.CognitoUsername);
接下来,我的计划是在通过所有类型的其他验证检查后,从这个API post方法更新池中的
custom:first\u name
custom:last\u name
属性。如果尝试更新,则会出现以下错误:

if (attributesChanged)
{
    await cognitoUser.UpdateAttributesAsync(userAttributes);
    // Error: "Database Failure - User is not authenticated."
}
为了测试这一点,我尝试了以下方法,然后奏效了:

if (attributesChanged)
{
    await _signInManager.PasswordSignInAsync(cognitoUser, "password", false, false);
    await cognitoUser.UpdateAttributesAsync(userAttributes);
}

因此,如果我使用密码登录用户,我就能够成功地更新cognito池中的自定义属性。然而,我不想这样做。我是否可以在API上设置某种管理员用户配置,允许我在不登录特定用户的情况下更新用户池记录,或者我(是否应该)将已登录用户的jwt令牌从Vue应用程序传递到API,并以某种方式使用它来确保身份验证

您需要为应用程序客户端分配
aws.cognito.signin.user.admin
范围。然后,您应该能够通过该用户修改用户属性


检查关于
aws.cognito.sign.user.admin
范围的“允许的OAuth范围”部分

我确实在API中为我正在使用的cognito应用程序客户端设置了
aws.cognito.signin.user.admin
,但是它仍然要求用户自己登录到API上。很抱歉,无法帮助您,但是根据这个问题,看起来您可以使用SDK更新用户属性。检查用户@Khoi的答案,