Nur für # 1 - 3-legged Autorisierung mit Autorisierungscode Fluss.
Wenn Ihre Anwendung den Autorisierungscode für ein Zugriffstoken austauscht, möchten Sie sicherstellen, dass der OAuth-Fluss, der zu dem bereitgestellten Autorisierungscode geführt hat, tatsächlich vom rechtmäßigen Benutzer initiiert wurde. Bevor die Clientanwendung den OAuth-Flow startet, indem sie den Benutzer an den Provider weiterleitet, erstellt die Clientanwendung einen zufälligen Statuswert und speichert ihn in der Regel in einer serverseitigen Sitzung. Wenn der Benutzer den OAuth-Flow abgeschlossen hat, überprüfen Sie, ob der Statuswert mit dem in der serverseitigen Sitzung des Benutzers gespeicherten Wert übereinstimmt. Dies weist darauf hin, dass der Benutzer den OAuth-Flow initiiert hat.
Ein Zustandswert sollte typischerweise ein pseudo-zufällige unguessable Wert sein. Ein einfacher Wert kann als ein int mit der Funktion rand() in PHP erzeugt werden, obwohl Sie auch komplexer werden könnten, um eine größere Sicherheit zu bieten.
Der Status existiert, um Dinge wie mich zu verhindern Ihnen einen Link per E-Mail senden, die einen Autorisierungscode für mein Konto enthält, klicken Sie darauf und die Anwendung schiebt alle Daten in mein Konto unbemerkt von Ihnen.
Einige zusätzliche Informationen im OAuth 2.0 Bedrohungsmodell Dokument: http://tools.ietf.org/html/draft-ietf-oauth-v2-threatmodel-00
Insbesondere finden Sie im Abschnitt über die CSRF-Schutz: http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-10.12
Sie erstellen einen Zufallswert Zustand und in der Regel speichert sie in einer serverseitigen Sitzung. Wer ist das "du"? die Client-App? der OAuth-Autorisierungsserver? –
Was sollte die ideale Länge des staatlichen Wertes sein? Irgendeine minimale Länge? oder maximale Länge? –
Die Client-App erstellt es und überprüft es. Der OAuth-Autorisierungsserver führt nur die Weiterleitung durch. –