Ein Nutzer klickt auf „Anmelden“, erreicht die Seite des Anbieters und kehrt zu Rails zurück. Der nächste Schritt kann trotzdem scheitern, weil er eine neue Verbindung vom Rails-Server aus aufbaut.

browser → provider authorization page → browser callback to Rails
Rails   → provider token endpoint → Rails

Der Browser folgt der Autorisierungsweiterleitung mit seiner eigenen Netzwerkkonfiguration. Rails führt den Token-Austausch über den Rückkanal mit dem HTTP-Client aus, den die installierte OmniAuth-Strategie auswählt. Ein Worker hinter einem Firmenproxy braucht diese Route für seine Anfragen an den Anbieter.

Auch OAuth 1.0 hat vor der Autorisierung durch den Nutzer einen serverseitigen Schritt für ein Request-Token. Der Authorization-Code-Flow von OAuth 2.0 hat nach dem Callback seinen eigenen Token-Austausch. Die genaue Reihenfolge hängt von der Strategie ab, aber Browser und Anwendungsserver bleiben getrennte Ausgangspunkte.

Die Konfiguration des Clients finden

Folgen Sie der Strategie bis zu dem HTTP-Client, der ihr Token und die API-Anfragen an den Anbieter sendet. Verwenden Sie die dokumentierte Proxy-Option dieses Clients. Manche Strategien reichen Client-Optionen an eine OAuth-Bibliothek weiter, andere konfigurieren darunter eine HTTP-Verbindung. Eine Option, die eine Strategie akzeptiert, ist nicht automatisch eine gemeinsame OmniAuth-Option.

Lassen Sie die Autorisierungs-, Token- und Callback-URLs des Anbieters seine tatsächlichen Dienste beschreiben. Der ausgehende Proxy ist eine Transporteinstellung, um den Anbieter zu erreichen, keine Ersatz-Callback-Adresse und kein Feld, das man den OAuth-Anfrageparametern hinzufügt.

Markieren Sie beim Verfolgen eines Logins den zuletzt abgeschlossenen Schritt. Eine angezeigte Anmeldeseite des Anbieters belegt, dass die Route des Browsers funktioniert hat. Ein von Rails empfangener Callback belegt, dass der Browser zurückgekehrt ist. Die anschließende Token-Anfrage ist die Stelle, an der Sie nach einer Proxy-Verbindung, einer Challenge oder einer Anbieterantwort aus dem Rails-Prozess suchen.

Ähnliche Artikel