OAuth авторизует перенаправление вызовов - PullRequest
0 голосов
/ 06 декабря 2018

Мне известно, что после того, как вы выполните вызов авторизации, сервер авторизации перенаправит на URL обратного вызова, который предоставляется с кодом авторизации.После получения кода авторизации кто должен выполнить вызов токена?Это из пользовательского интерфейса или из бэкэнда?Пожалуйста, объясните логику, лежащую в основе этого.

Если бэкэнд, как я могу следовать перенаправлениям на бэкэнд?

Я все вместе неправильно истолковал концепцию OAuth?Все высоко ценится.Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Поток кода авторизации OAuth2 должен быть инициализирован на вашем бэкэнде.Ваш бэкэнд должен также обработать перенаправление с сервера авторизации (который содержит код авторизации).Вероятно, вам нужен клиентский секрет для доступа к конечной точке токена, вы должны хранить его на бэкэнде, потому что невозможно сохранить его в браузере.

Вам не нужно следовать перенаправлениям.Перенаправления всегда вызывают вызов браузера -> server (backend), поскольку браузер обрабатывает перенаправление, создавая HTTP-запрос.

Существуют разные потоки OAuth2 , предназначенные для различных случаев использования.Какой из них использовать, это во многом зависит от того, как вы хотите его использовать и как выглядит ваша инфраструктура (вы можете сформулировать новый вопрос, когда он станет более понятным для вас).Если вы хотите узнать больше об OAuth2, я бы посоветовал вам прочитать его RFC .Он хорошо написан, легко читается и не пропускает никаких важных деталей.Существует также расширение протокола OAuth2 под названием OpenID Connect , предназначенное для аутентификации.

0 голосов
/ 07 декабря 2018

Полагаю, это можно сделать обоими способами.Но для authorization code grant потока я бы предложил вам использовать бэкэнд.Из доступных потоков OAuth implicit grant обычно используется для одностраничных приложений.Поэтому это было сделано через сам браузер.Но в настоящее время они предпочитают использовать код авторизации для SPA.Вам понадобится конфиденциальная информация, такая как client_secret при вызове конечной точки токена.Поэтому для получения токена будет лучше использовать back-end, а не front-end.

...