Не знам дали просто имам някакъв вид сляпо петно или какво, но прочетох спецификацията на OAuth 2 много пъти и прегледах архивите на пощенските списъци и все още не съм намерил добро обяснение защо имплицитното предоставяне е разработен поток за получаване на токени за достъп. В сравнение с предоставянето на код за оторизация, изглежда просто се отказва от удостоверяването на клиента без много убедителна причина. Как е това "оптимизирано за клиенти, внедрени в браузър, използващ скриптов език" (да цитирам спецификацията)?
И двата потока започват еднакво (източник: http://tools.ietf.org/html/draft-ietf-oauth-v2-22):
- Клиентът инициира потока, като насочва потребителския агент на собственика на ресурса към крайната точка за оторизация.
- Сървърът за оторизация удостоверява собственика на ресурса (чрез потребителския агент) и установява дали собственикът на ресурса предоставя или отказва заявката за достъп на клиента.
- Assuming the resource owner grants access, the authorization server redirects the user-agent back to the client using the redirection URI provided earlier (in the request or during client registration).
- The redirection URI includes an authorization code (Authorization code flow)
- URI адресът за пренасочване включва токена за достъп във фрагмента на URI (имплицитен поток)
Тук потоците се разделят. И в двата случая URI за пренасочване в този момент е към някаква крайна точка, хоствана от клиента:
- В потока на кода за оторизация, когато потребителският агент удари тази крайна точка с кода за оторизация в URI, кодът в тази крайна точка обменя кода за оторизация заедно със своите клиентски идентификационни данни за токен за достъп, който след това може да използва при необходимост. Може например да го запише в уеб страница, до която скрипт на страницата може да има достъп.
- Неявният поток пропуска напълно тази стъпка за удостоверяване на клиента и просто зарежда уеб страница с клиентски скрипт. Тук има сладък трик с URL фрагмента, който предпазва токена за достъп от прекалено много предаване, но крайният резултат е по същество същият: хостваният от клиента сайт обслужва страница с някакъв скрипт в нея, който може да грабне токена за достъп .
Оттук и въпросът ми: какво се печели тук чрез пропускане на стъпката за удостоверяване на клиента?