Какова цель неявного типа авторизации grant в OAuth 2?

Не знаю, может быть, у меня просто какое-то слепое пятно или что, но я много раз перечитывал спецификацию OAuth 2 и просматривал архивы списков рассылки, и я так и не нашел хорошего объяснения, почему был разработан поток Implicit Grant для получения токенов доступа. По сравнению с Authorization Code Grant, он, кажется, просто отказывается от аутентификации клиента без какой-либо убедительной причины. Как это "оптимизировано для клиентов, реализованных в браузере с использованием языка сценариев" (цитирую спецификацию)?

Оба потока начинаются одинаково (источник: http://tools.ietf.org/html/draft-ietf-oauth-v2-22):

  1. Клиент инициирует поток, направляя user-agent владельца ресурса на конечную точку авторизации.
  2. Сервер авторизации проверяет подлинность владельца ресурса (через агента пользователя) и устанавливает, удовлетворяет или отклоняет владелец ресурса запрос клиента на доступ.
  3. Если владелец ресурса предоставляет доступ, сервер авторизации перенаправляет агента пользователя обратно клиенту, используя URI перенаправления, предоставленный ранее (в запросе или при регистрации клиента).
    • URI перенаправления включает код авторизации (поток кода авторизации)
    • URI перенаправления включает маркер доступа во фрагмент URI (неявный поток)

Здесь потоки разделяются. В обоих случаях URI перенаправления в этот момент направлен на какую-то конечную точку, расположенную у клиента:

  • В потоке кода авторизации, когда агент пользователя попадает на эту конечную точку с кодом авторизации в URI, код на этой конечной точке обменивает код авторизации вместе с учетными данными клиента на маркер доступа, который он может затем использовать по мере необходимости. Например, он может записать его в веб-страницу, к которой может получить доступ сценарий на странице.
  • Поток Implicit полностью пропускает этот шаг аутентификации клиента и просто загружает веб-страницу со сценарием клиента. Здесь есть симпатичный трюк с фрагментом URL, который позволяет не передавать токен доступа слишком часто, но конечный результат, по сути, тот же: сайт, размещенный на клиенте, предоставляет страницу с некоторым сценарием, который может получить токен доступа.

Отсюда мой вопрос: что здесь можно получить, пропустив шаг аутентификации клиента?

242
задан John Bachir 14 November 2011 в 14:56
поделиться