pool-ом и API GAteway, который через лямбды берет данные из БД.
Есть 1 тестовый юзер. Также есть отдельно база PostgreSQL, в которой много нужных юзеру данных.
Я хочу добавить роли, типа "Admin", "User", "Inspector", чтобы на UI отключать какие-то элементы (запретить удалять). А также, проверять на стороне API (лямбды), что данный запрос пришел от пользователя с такакой-то ролью и ему удалять нельзя.
Как эти роли, собственно ,внедрять?
Мой первый варинт был - тригер перед генерацией токена, который пойдет в постгрес, возьмет user_id, который sub и глянет какая роль и добавит как claims. Это верное направление?
Второй вариант был, зная sub (из сессии amplify), я могу по нему зайти в постгрес и там глянуь уже, что юзер может, а чего не может. Но это как бы отдельный вызов АИ юудет
Вопросы архитектуры это всегда баланс плюсов и минусов. aws тем и прекрасен что можно одну и ту же задачу решить сотней разных способов. Рекомендую рассмотреть оба решения подробно с разных сторон стоимость, безопасность и тд. Может быть в процессе решения у вас появится какая-то база в которой роль-юзер будут кешироваться, может быть в имени юзера будет ответ о его правах и тд.
Благодарю за совет) я думал, что это может быть типовой задачей, которую кто-то уже решал))
я не настоящий сварщик но cognito + JWT токен + custom claim с ролью юзера в этом токене = имеем на фронте в amplify роль, дальше уже в UI включаем-отключаем элементы https://aws.amazon.com/blogs/mobile/how-to-use-cognito-pre-token-generators-to-customize-claims-in-id-tokens/
А в customClaims ролт появляются благодаря триггеру, который все же идет в таблицу, например, users_roles?
Ну это же вы сами в лямбде делаете, как надо по бизнес логике так и сделайте
Пока не делаю) просто claims с ролью в токене должен же кто-то запихнуть. И как я понимаю, это будет триггер-лямбда
Обсуждают сегодня