Не знаю, может быть, у меня просто какое-то слепое пятно или что, но я много раз перечитывал спецификацию OAuth 2 и просматривал архивы списков рассылки, и я так и не нашел хорошего объяснения, почему был разработан поток Implicit Grant для получения токенов доступа. По сравнению с Authorization Code Grant, он, кажется, просто отказывается от аутентификации клиента без какой-либо убедительной причины. Как это "оптимизировано для клиентов, реализованных в браузере с использованием языка сценариев" (цитирую спецификацию)?
Оба потока начинаются одинаково (источник: http://tools.ietf.org/html/draft-ietf-oauth-v2-22):
- Клиент инициирует поток, направляя user-agent владельца ресурса на конечную точку авторизации.
- Сервер авторизации проверяет подлинность владельца ресурса (через агента пользователя) и устанавливает, удовлетворяет или отклоняет владелец ресурса запрос клиента на доступ.
- Если владелец ресурса предоставляет доступ, сервер авторизации перенаправляет агента пользователя обратно клиенту, используя URI перенаправления, предоставленный ранее (в запросе или при регистрации клиента).
- URI перенаправления включает код авторизации (поток кода авторизации)
- URI перенаправления включает маркер доступа во фрагмент URI (неявный поток)
Здесь потоки разделяются. В обоих случаях URI перенаправления в этот момент направлен на какую-то конечную точку, расположенную у клиента:
- В потоке кода авторизации, когда агент пользователя попадает на эту конечную точку с кодом авторизации в URI, код на этой конечной точке обменивает код авторизации вместе с учетными данными клиента на маркер доступа, который он может затем использовать по мере необходимости. Например, он может записать его в веб-страницу, к которой может получить доступ сценарий на странице.
- Поток Implicit полностью пропускает этот шаг аутентификации клиента и просто загружает веб-страницу со сценарием клиента. Здесь есть симпатичный трюк с фрагментом URL, который позволяет не передавать токен доступа слишком часто, но конечный результат, по сути, тот же: сайт, размещенный на клиенте, предоставляет страницу с некоторым сценарием, который может получить токен доступа.
Отсюда мой вопрос: что здесь можно получить, пропустив шаг аутентификации клиента?
задан John Bachir 14 November 2011 в 14:56
поделиться