Первоначально я настроил свой Identity Pool с ролями по умолчанию, а в роли с проверкой подлинности я добавил управляемую AWS политику AdministratorAccess. Это работало нормально, я получаю временные учетные данные и оценку CRUD для пользователей Cognito, но мне нужны другие группы пользователей с разными уровнями разрешений. Для начала я настроил группу администраторов в пулах пользователей Cognito и назначил ей настраиваемую роль fullAdmin IAM, в которую входит AdministratorAccess.
Это происходит сбой, когда я использую оба метода в выборе ролей с проверкой подлинности пула удостоверений. Я использую консоль AWS. Ошибка:
NotAuthorizedException: Unauthenticated access is not supported for this identity pool
Для разрешения роли я хочу использовать Deny.
Если я выберу опцию использования аутентифицированной роли по умолчанию с политикой AdministratorAccess, то она сработает, у меня есть доступ администратора, но это означает, что она не распознает мое правило или методы токена. Это плохо.
Я думаю, что мой код работает, потому что метод по умолчанию работает, но не уверен. Должен ли мой код быть другим, чтобы использовать правила или токен для получения группы пользователей?
Может быть, у меня есть только эта проблема:
Я использую AWS Amplify для получения текущего сеанса пользователя, который включает токены доступа и id.
Auth.currentCredentials()
Документы рекомендуют AWS.CognitoIdentityCredentials. Возможно, использование утверждения cognito:groups
в правилах или использование токена не работает, потому что свойства сеанса не могут быть прочитаны Identity Pool. Объекты могут быть разными. Я пытался настроить AWS.CognitoIdentityCredentials, чтобы проверить это, но это пока не работает в моем коде. AWS не может быть импортирован из AWS-sdk без создания беспорядка, поэтому я импортирую его из @ aws-ampify / core. Весь мой код настроен с этого.
В моем коде JavaScript / Angular это извлекает группу из токена ID:
user.signInUserSession.idToken.payload['cognito:groups'];
Для заявления я попытался signInUserSession.idToken.payload['cognito:groups']
, но это тоже не сработало. То, что мало информации в сети, дает только cognito: groups в качестве опции заявки, но это не работает.
Какие-нибудь идеи для решения или устранения проблем?