OAuth авторизует перенаправление вызовов
Мне известно, что после того, как вы выполните вызов авторизации, сервер авторизации перенаправит на URL обратного вызова, который предоставляется с кодом авторизации. После получения кода авторизации кто должен выполнить вызов токена? Это из пользовательского интерфейса или из бэкэнда? Пожалуйста, объясните логику этого.
Если бэкэнд, как я могу следовать перенаправления на бэкэнд?
Я неправильно истолковал концепцию OAuth? Все высоко ценится. Спасибо.
2 ответа
Поток кода авторизации OAuth2 должен быть инициализирован на вашем бэкэнде. Ваш бэкэнд должен также обработать перенаправление с сервера авторизации (который содержит код авторизации). Вероятно, вам нужен клиентский секрет для доступа к конечной точке токена, вы должны хранить его на бэкэнде, потому что невозможно сохранить его в браузере.
Вам не нужно следовать перенаправлениям. Перенаправления всегда вызывают вызов браузера -> server (backend), потому что браузер обрабатывает перенаправление, создавая HTTP-запрос.
Существуют разные потоки OAuth2, разработанные для различных случаев использования. Какой из них использовать, это во многом зависит от того, как вы хотите его использовать и как выглядит ваша инфраструктура (вы можете сформулировать новый вопрос, когда он станет более понятным для вас). Если вы хотите узнать больше об OAuth2, я бы посоветовал вам прочитать его RFC. Он хорошо написан, легко читается и не пропускает никаких важных деталей. Существует также расширение протокола OAuth2 под названием OpenID Connect, предназначенное для аутентификации.
Я полагаю, это можно сделать обоими способами. Но для authorization code grant
поток, я бы посоветовал вам использовать бэкэнд. Из доступных потоков OAuth, implicit grant
обычно используется для одностраничных приложений. Поэтому это было сделано через сам браузер. Но в настоящее время они предпочитают использовать код авторизации для SPA. Вам понадобится конфиденциальная информация, такая как client_secret
при вызове конечной точки токена. Так что будет лучше использовать back-end для получения токена, а не front-end.