Cognito - мощный инструмент, но его так сложно использовать.
Пытаясь реализовать свою бизнес-логику, я оказался в тупике и мне нужна помощь.
Моим клиентским приложением является панель администратора , где новый admin может зарегистрироваться, предоставив компанию .
Теперь есть 2 приложения (конкурсы, обзоры), основанные на этих компаниях.
Таким образом, из панели adminPanel администратор может создавать события для обоих приложений с помощью 2 различных остальных API
Концепция1 администратор связан с одной или несколькими компаниями. Мне нужно каким-то образом сопоставить эти отношения с Cognito.
Поскольку cognito довольно хорошо выполняет аутентификацию, но не авторизация .
В каждом запросе не только я должен проверять пользователя по токену доступа, но я также должен видеть, уполномочен ли пользователь выполнять действие на основе компании.
Например, если пользователь хочет создать событие Contest для своей компании.Я сделаю запрос на Contest Api , и я должен разрешить, что администратор связан с этой компанией
Субъекты компании используются из обоих API, поэтому я должен выставить их в новом APIназываемые компаниями. (Если какой-либо API требует информацию о компаниях, он должен позвонить в get company / {id})
Я считаю, что для того, чтобы авторизовать пользователя в моем API, я должен:
1) проверить access_token.
2) связаться с Cognito , чтобы получить информацию о пользователе.
3) вызвать компании api, чтобы проверить, авторизован ли пользователь для выполнения действий для этой кампании.
Так что я чувствую, что это становится слишком сложным, и мне нужно 2 службы для аутентификации и авторизации каждого запроса (cognito + company api).Есть ли другой способ реализовать логику авторизации Cognito без использования второго API?
PS Я уже проверил триггеры Cognito, но они не покрывают мои потребности. Например, триггер предварительного генерирования токена может добавлять утверждения, но добавляет их в identity_token not access_token . Также мои утверждения должны быть массивом company_ids, с которым связан администратор, но утверждения поддерживают только строки и цифры