Nie wiem, czy mam po prostu jakiś martwy punkt lub coś, ale przeczytałem specyfikację OAuth 2 wiele razy i przejrzałem archiwa listy mailingowej, i muszę jeszcze znaleźć dobre wyjaśnienie, dlaczego Implicit Grant opracowano przepływ w celu uzyskania tokenów dostępu. W porównaniu do przyznania kodu autoryzacji wydaje się, że po prostu rezygnuje z uwierzytelniania klienta bez bardzo ważnego powodu. Jak to jest „zoptymalizowane dla klientów zaimplementowanych w przeglądarce za pomocą języka skryptowego” (cytując specyfikację)?
Oba przepływy zaczynają się tak samo (źródło: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Klient inicjuje przepływ, kierując klienta użytkownika agenta właściciela zasobu do punktu końcowego autoryzacji.
- Serwer autoryzacji uwierzytelnia właściciela zasobu (za pośrednictwem klienta użytkownika) i ustala, czy właściciel zasobu przyznaje, czy odrzuca żądanie dostępu klienta.
- Zakładając, że właściciel zasobu przyznaje dostęp, serwer autoryzacji przekierowuje klienta użytkownika z powrotem do klienta za pomocą podanego wcześniej identyfikatora URI przekierowania (w żądaniu lub podczas rejestracji klienta).
- Identyfikator URI przekierowania zawiera kod autoryzacji (przepływ kodu autoryzacji)
- Identyfikator URI przekierowania zawiera token dostępu we fragmencie URI (przepływ niejawny)
Oto, gdzie przepływy się rozdzielają. W obu przypadkach identyfikator URI przekierowania w tym punkcie znajduje się w punkcie końcowym hostowanym przez klienta:
- W przepływie kodu autoryzacji, gdy agent użytkownika trafi w ten punkt końcowy kodem autoryzacji w identyfikatorze URI, kod w tym punkcie końcowym wymienia kod autoryzacji wraz z poświadczeniami klienta na token dostępu, którego może następnie użyć w razie potrzeby. Może na przykład zapisać go na stronie internetowej, do której skrypt na stronie mógłby uzyskać dostęp.
- Przepływ niejawny całkowicie pomija ten etap uwierzytelniania klienta i po prostu ładuje stronę internetową ze skryptem klienta. Tutaj jest urocza sztuczka z fragmentem adresu URL, który zapobiega zbyt dużemu przekazywaniu tokenu dostępu, ale wynik końcowy jest zasadniczo taki sam: witryna hostowana przez klienta wyświetla stronę z jakimś skryptem, który może pobrać token dostępu .
Stąd moje pytanie: co tu uzyskano, pomijając etap uwierzytelniania klienta?