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