Я не знаю, есть ли у меня какое-то слепое пятно или что-то еще, но я много раз читал спецификацию OAuth 2 и просматривал архивы списков рассылки, и мне еще предстоит найти хорошее объяснение, почему неявный грант Поток для получения токенов доступа был разработан. По сравнению с предоставлением кода авторизации кажется, что он просто отказывается от аутентификации клиента без веских причин. Как это «оптимизировано для клиентов, реализованных в браузере с использованием языка сценариев» (чтобы процитировать спецификацию)?
Оба потока начинаются одинаково (источник: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Клиент инициирует поток, направляя пользовательский агент владельца ресурса в конечную точку авторизации.
- Сервер авторизации аутентифицирует владельца ресурса (через агента пользователя) и устанавливает, предоставляет ли владелец ресурса запрос клиента на доступ или отклоняет его.
- Предполагая, что владелец ресурса предоставляет доступ, сервер авторизации перенаправляет агента пользователя обратно клиенту, используя ранее предоставленный URI перенаправления (в запросе или во время регистрации клиента).
- URI перенаправления включает в себя код авторизации (поток кода авторизации)
- URI перенаправления включает маркер доступа во фрагмент URI (неявный поток)
Здесь потоки разделены. В обоих случаях URI перенаправления на данный момент находится на некоторой конечной точке, размещенной клиентом:
- В потоке кода авторизации, когда пользовательский агент обращается к этой конечной точке с кодом авторизации в URI, код этой конечной точки обменивает код авторизации вместе со своими учетными данными клиента для маркера доступа, который он затем может использовать по мере необходимости. Например, он может записать его на веб-страницу, к которой может получить доступ скрипт.
- Неявный поток пропускает этот этап аутентификации клиента и просто загружает веб-страницу с помощью клиентского скрипта. Здесь есть небольшая хитрость с фрагментом URL, который предотвращает слишком частую передачу токена доступа, но конечный результат по сути тот же: сайт, размещенный на клиенте, отображает страницу с некоторым скриптом, который может захватить токен доступа. ,
Отсюда мой вопрос: что здесь получилось, если пропустить шаг аутентификации клиента?