Я хотел бы использовать AWS Cognito (пулы пользователей и пулы идентификации) для управления доступом к моему веб-приложению.
Это веб-приложение является генератором отчетов. Он генерирует отчеты из собранных данных датчиков.
Возможный объем запрашиваемых данных зависит от пользователя. Некоторые пользователи должны иметь доступ только к определенным идентификаторам датчиков или датчикам из указанной области или диапазона дат.
Однако я хотел бы сделать некоторые отчеты общедоступными, например. данные с датчиков из Нью-Йорка должны быть доступны каждому без необходимости регистрироваться / регистрироваться.
Что касается аутентифицированных пользователей, я думаю, что я мог бы просто добавить пользовательский атрибут в Cognito User Pool с идентификаторами датчиков, к которым указанный пользователь должен иметь доступ.
Затем, после регистрации и входа в Cognito, пользователь может отправить запрос в мое приложение, а я проверим JWT и получу из полезной нагрузки информацию о том, какие датчики могут запрашивать пользователь.
К сожалению, я не уверен, как обращаться с неаутентифицированными пользователями. Я вижу это так:
- Пользователь переходит на страницу с определенным общедоступным отчетом. Например. https://example.com/reports/new-york/
- Frontend (React.js) каким-то образом получает подписанный JWT с пользовательским атрибутом
custom:city
= New York
.
- Frontend отправляет запрос в мое приложение, мое приложение проверяет JWT и разрешает данные пользователю, если запрос содержит запрос только для датчиков Нью-Йорка.
Может быть, мне следует создать пользователя с известным именем пользователя и паролем и жестко закодировать его во внешнем интерфейсе?
Это правильный способ использования Cognito? Должен ли я реализовать это каким-либо другим способом?