Авторизация на основе ролей с использованием AWS Cognito для внешнего интерфейса - PullRequest
1 голос
/ 10 марта 2019

Как реализовать авторизацию на основе ролей с помощью пула пользователей Cognito?При создании внешнего приложения Angular я использую пул пользователей Cognito для аутентификации.Нет проблем там.Я хочу, чтобы пользователи с разными ролями видели разные части приложения.Таким образом, роль должна быть возвращена откуда-то.Я назначил роль пользователю, когда пользователь создается в пуле пользователей, и эта информация о роли может быть возвращена во время аутентификации.Затем я использую эту роль, чтобы принять решение о том, какие страницы пользовательского интерфейса показывать текущему пользователю, прошедшему проверку подлинности (как в аутентификации с использованием CanActivate и т. Д. В Angular).Это работает только в некоторой степени, потому что пользовательская роль не может пережить обновление F5 или пользователь перенаправляет на другую страницу, вводя URL-адрес напрямую (что приводит к перезагрузке страницы).Эта информация о роли пользователя должна каким-то образом храниться в токене или пользовательском сеансе, чтобы мы могли извлечь роль пользователя, если сеанс пользователя действителен.Кто-нибудь знает как?Где-нибудь есть пример?Поиски, некоторые разговоры об использовании политики AWS IAM, групп пользователей в Cognito и т. Д., Но не могу понять.

Thanks a lot for looking,

Мартин

1 Ответ

0 голосов
/ 18 марта 2019

Хорошо, позвольте мне ответить на мой собственный вопрос.Разобрался в одну сторону.Оказывается, AWS Cognito хранит информацию о пользователе (независимо от того, что вы включили в пул пользователей при ее создании) в токене id.Поэтому, если я разработал поле, которое будет выполнять роль пользователя, я смогу получить его в любое время после входа в систему, пока сеанс все еще действителен.Таким образом, чтобы контролировать доступ к определенной странице, мне просто нужно проверить, прошел ли пользователь аутентификацию и соответствует ли его роль ожидаемому (с помощью CanActivate).

Это работает довольно хорошо для меня, но я не уверен на 100%если существует какая-либо внутренняя угроза безопасности при использовании Cognito для аутентификации и авторизации.Пожалуйста, дайте мне знать, если вы знаете, и как этого избежать.

...