Принимайте только аутентифицированные запросы к бэкенду
У меня такой вопрос. Я совсем новичок в этой области.
У меня есть веб-приложение.
Оно состоит из сервисов, развернутых на движке Docker.
Основными сервисами/контейнерами являются:
- Фронтенд : React на веб-сервере Nginx
- Backend (API) : Django, DRF на gunicorn на Nginx .
Для фронтенда я использую провайдер Auth0. Он работает так, как ожидалось. Если пользователь не аутентифицирован/авторизован, он перенаправляется на страницу входа.
Теперь я хочу также "защитить" мой бэкенд, чтобы он принимал только аутентифицированные соединения от фронтенда.
Для бэкенда (Django) у меня также включен CORS (django-cors-headers пакет), но я все еще могу подключиться из браузера my-site/api/ и получить ответ.
.
Кто-нибудь знает, какую стратегию мне следует использовать.
Должен ли я как-то защитить его с помощью JWT-токенов. Как-то передать его бэкенду в запросе?
Существуют различные способы авторизации вызовов API из ваших внешних приложений для выполнения действий на вашем внутреннем сервере. Они, как правило, различаются по нескольким аспектам:
- Сложность
- Необходимость знать, кто послал запрос
- Поверхности доступа
- Продолжительность доступа
- Роли
- и так далее...
В этом случае, если у вас есть аутентифицированные пользователи на вашем front-end с помощью AuthO, то JWT может иметь смысл, так как с помощью этого метода вы можете закодировать определенные данные пользователя, которые позволят вам принять решение на вашем back-end о том, должен ли этот пользователь иметь доступ к этому действию в это время.
Вот статья, объясняющая несколько популярных методов аутентификации