Amazon Cognito "Клиент попытался написать несанкционированный атрибут"

Я использую JavaScript SDK для AWS Cognito, и есть несколько пользовательских атрибутов, которые я просто не могу сэкономить и не могу понять, почему.

Атрибутами проблемы являются изменяемые строковые поля следующим образом:

custom: role
custom: recruitingrole
custom: title

Другие настраиваемые поля в одном запросе, похоже, обновляются ОК. В частности, эти, похоже, работают:

custom:division
custom:linkedin
custom:location
custom:bio

Когда я отправляю через SDK, это возвращается:

{"__type": "NotAuthorizedException", "message": "Клиент попытался написать несанкционированный атрибут"}

Вот данные, которые отправляются, как показано в выводе консоли консоли разработчика Chrome:

{
    "AccessToken": "",
    "UserAttributes": [{
        "Name": "name",
        "Value": "Steve Austin"
    }, {
        "Name": "custom:company",
        "Value": "OSI"
    }, {
        "Name": "custom:division",
        "Value": "Bionics"
    }, {
        "Name": "custom:recruitingrole",
        "Value": "other"
    }, {
        "Name": "custom:linkedin",
        "Value": "http://www.linkedin.com"
    }, {
        "Name": "custom:location",
        "Value": "Mexico City, Mexico City, Mexico"
    }, {
        "Name": "custom:bio",
        "Value": "A man barely alive."
    }]
}

Может ли кто-нибудь предположить, почему я не могу сохранить эти атрибуты?

Спасибо

Ответ 1

Конечно, ответ стал ясным в тот момент, когда я закончил публикацию в StackOverflow.

Проблема заключалась в том, что я не устанавливал разрешения для этих атрибутов в приложении, связанном с пулом пользователей. Документация должна четко разъяснять это требование, когда оно обсуждает пользовательские атрибуты.

enter image description here

Ответ 2

Просто выделите ответ от @mvandillen:

General settingsApp clientsShow detailsSet attribute read and write permissions link

Ответ 3

Для всех, кто сталкивается с этим вопросом:

Как и другие, вы должны включить доступные для записи атрибуты. Но если это не сработает, убедитесь, что вы используете custom: префикс:

await Auth.signUp({
      username: email,
      password: password,
      attributes: {
        'custom:firstName': firstName,
        'custom:lastName': lastName,
        'custom:countryCode': countryCode
      }
    })

Ответ 4

Используя Amazon.Extensions.CognitoAuthentication в ASP.NET Core, вы должны добавить:

var user = _pool.GetUser(model.Email)
user.Attributes.Add("name", model.Name);

Здесь name это пользовательский атрибут