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 settings → App clients → Show details → Set 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
это пользовательский атрибут