Почему выбор роли с проверкой подлинности в пуле идентификаторов AWS не выполняется обоими методами? Также усилить - PullRequest
0 голосов
/ 03 января 2019

Первоначально я настроил свой 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 в качестве опции заявки, но это не работает.

Какие-нибудь идеи для решения или устранения проблем?

1 Ответ

0 голосов
/ 04 января 2019

Ответ прост. Я удалил Identity Pool и создал новый. Однако я забыл, что мне нужно обновлять идентификатор пула удостоверений в каждой роли в IAM, которую я использую с этим пулом удостоверений.

Это означает, что перейдите к ролям, которые вы используете в Identity Pool, перейдите на вкладку Trust Relationships, отредактируйте, и там, где написано StringEquals, убедитесь, что у вас есть этот ключ cognito-identity.amazonaws.com:aud и ваш ID Identity Pool в качестве значения us-west-2:e8340b.....

...