Ich weiß nicht, ob ich nur einen blinden Fleck habe oder was, aber ich habe die OAuth 2-Spezifikation viele Male gelesen und die Mailinglisten-Archive durchgesehen, und ich habe noch keine gute Erklärung dafür gefunden, warum der implizite Zuschuss Der Fluss zum Erhalten von Zugriffstoken wurde entwickelt. Im Vergleich zum Authorization Code Grant scheint die Clientauthentifizierung ohne zwingenden Grund einfach aufzugeben. Wie wird dies "für Clients optimiert, die in einem Browser mithilfe einer Skriptsprache implementiert sind" (um die Spezifikation zu zitieren)?
Beide Flows beginnen gleich (Quelle: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Der Client initiiert den Ablauf, indem er den Benutzeragenten des Ressourcenbesitzers an den Autorisierungsendpunkt weiterleitet.
- Der Autorisierungsserver authentifiziert den Ressourcenbesitzer (über den Benutzeragenten) und stellt fest, ob der Ressourcenbesitzer die Zugriffsanforderung des Clients gewährt oder verweigert.
- Angenommen, der Ressourcenbesitzer gewährt Zugriff, leitet der Autorisierungsserver den Benutzeragenten mithilfe des zuvor angegebenen Umleitungs-URI (in der Anforderung oder während der Clientregistrierung) zurück zum Client.
- Der Umleitungs-URI enthält einen Autorisierungscode (Autorisierungscode-Fluss).
- Der Umleitungs-URI enthält das Zugriffstoken im URI-Fragment (impliziter Fluss).
Hier teilen sich die Flüsse. In beiden Fällen befindet sich der Umleitungs-URI zu diesem Zeitpunkt auf einem vom Client gehosteten Endpunkt:
- Wenn der Benutzeragent im Autorisierungscodefluss diesen Endpunkt mit dem Autorisierungscode im URI trifft, tauscht der Code an diesem Endpunkt den Autorisierungscode zusammen mit seinen Client-Anmeldeinformationen gegen ein Zugriffstoken aus, das er dann nach Bedarf verwenden kann. Es könnte beispielsweise in eine Webseite geschrieben werden, auf die ein Skript auf der Seite zugreifen kann.
- Der implizite Ablauf überspringt diesen Clientauthentifizierungsschritt vollständig und lädt lediglich eine Webseite mit Client-Skript. Es gibt hier einen niedlichen Trick mit dem URL-Fragment, das verhindert, dass das Zugriffstoken zu viel herumgereicht wird, aber das Endergebnis ist im Wesentlichen dasselbe: Die vom Client gehostete Site stellt eine Seite mit einem Skript bereit, das das Zugriffstoken abrufen kann .
Daher meine Frage: Was wurde hier durch Überspringen des Clientauthentifizierungsschritts erreicht?