AWS Cognito AdminLinkProviderForUser пытается обновить неизменяемый атрибут пользователя

#amazon-web-services #single-sign-on #amazon-cognito #saml

Вопрос:

Я хотел бы связать нового пользователя, использующего единый вход, с существующим пользователем cognito. Для достижения этой цели у cognito есть конечная точка AdminLinkProviderForUser. Но эта конечная точка возвращает ошибку ниже, и я не могу изменить конфигурацию атрибута пользователя, так как Cognito мне этого не позволяет.

 Cannot update attribute: custom:someCustomAttribute: Attribute cannot be updated.  (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: InvalidParameterException; Request ID: Xxxxxxxxxx; Proxy: null): com.amazonaws.services.cognitoidp.model.InvalidParameterException: Cannot update attribute: custom:someCustomAttribute: Attribute cannot be updated.  

Существует ли какой-либо другой способ связать федеративного пользователя единого входа на основе SAML с существующим пользователем cognito (имя пользователя-пароль)?

Большое спасибо!

Ответ №1:

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

Комментарии:

1. Эй, спасибо, что продолжили! Я сталкиваюсь с той же проблемой. Как бы вы воссоздали пользователя, чтобы связать их? Можем ли мы сделать ссылку как часть команды регистрации? Разве это не выводит пользователя из системы среди прочих проблем? Я думаю, что предпочел бы создать идентичный изменяемый атрибут и использовать его в дальнейшем. Почему adminlink в любом случае касается этих атрибутов?

2. Эй, @мальчик, Прежде всего, мне пришлось создать новый идентичный mutable атрибут пользователя, чтобы заменить неизменяемые атрибуты пользователя cognito, и обновить всех пользователей, чтобы избежать исключения InvalidParameterException во время операции связывания. Почему adminlink прикасается к этому, для меня тоже загадка.. Что касается повторного создания, у меня есть скрипт на python для повторного создания пользователя, который вызывает конечную точку бэкенда, и эта конечная точка создает пользователя с новыми изменяемыми атрибутами и выполняет другие операции, такие как отправка электронной почты и т. Д.