Bestimmen Sie die Benutzer-ID in OAUTH Callback

8

Der OAuth-Prozess ist:

  1. Bei der OAuth-Authentifizierung leitet die App (a.k.a OAuth-Client) den Benutzer an die authorize_url

  2. Dies leitet den Benutzer auf den Webserver des oauth-Servers um, wo der Benutzer die Berechtigung erteilt Web App Zugriff auf sein Konto

  3. Der OAuth-Server leitet den Benutzer zur Callback-URL um, die von der Anwendung (a.k.a oauth Client). An diesem Punkt kam der Rückruf vom OAuth-Server und verfügt daher nicht über die Sitzungs-ID oder den Sitzungshash. Wie bestimmt die Anwendung, für welchen Benutzer der Post-Oauth-Callback aufgerufen wird?

Ich denke, dass dies funktioniert:

  1. Wenn Sie den Benutzer an die authorize_url weiterleiten, hängen Sie bestimmte an Parameter für die Abfragezeichenfolge ?id=xxx

  2. Wenn der OAuth-Server zu der von der Webschnittstelle bereitgestellten Callback-URL umleitet Client ist einer der Parameter mit der HTTP - Nachricht der Parameter, der an die Abfragezeichenfolge in Schritt 1 angehängt wird.

Dies scheint jedoch nicht für den OAuth-Server zu funktionieren, in den ich mich einhaken möchte.

Irgendwelche Vorschläge?

    
aiyer 02.01.2011, 07:37
quelle

4 Antworten

4

Nachdem der Benutzer Ihr Anfrage-Token verifiziert hat (durch Eingabe von Benutzername und Passwort), sollten Sie die Parameter oauth_token und oauth_verifier zurückgesendet bekommen, die an den Callback angehängt sind.

Wenn dies funktioniert, aber andere Parameter, die Sie im Callback angegeben haben, NICHT im Callback enthalten sind, dann kann es sein, dass der Provider einfach den oauth_callback ignoriert, den Sie im Anforderungstoken senden .

Wenn dies der Fall ist, verweist der Anbieter auf einen vordefinierten Rückruf, normalerweise einen, den Sie beim Erfassen von Consumer Key und Secret angegeben haben.

OAuth-Provider dürfen Callbacks ignorieren, die während des Autorisierungsablaufs gesendet wurden (mit Ausnahme von Signierungszwecken). Einige Anbieter tun dies, um eine zusätzliche Sicherheitsebene hinzuzufügen.

    
Jon Nylander 03.01.2011 19:36
quelle
1

Was meinst du mit "das geht nicht"?

Der Server sendet das Abfrageteil nicht zurück? Sie müssen den Status in der Callback-URL codieren, die Sie dem oauth-Server bereitstellen. Dies kann in der Abfrage oder im Pfadteil erfolgen. Ich sehe keinen Grund, warum das nicht funktioniert?

Vielleicht nehmen Sie an, dass Sie einen einzelnen, generischen Callback haben, der automatisch mit dem Status expandiert wird? Soweit bekannt, ist dies nicht der Fall.

BEARBEITEN

Ich lese die Dokumente erneut in der Google-Implementierung:

%Vor%

SO (im Gegensatz zu meiner obigen Aussage) hängt der OAuth-Server aktiv Informationen (& amp; oauth_token = kkk) an Ihre URL an. Der Token sollte der gleiche sein, den Sie als Ergebnis von "OAuthGetRequestTOken" erhalten haben. Das funktioniert nicht für dich?

Soweit ich es jetzt verstehe, sollte der Server alles, was Sie haben, in die callback_url kopieren und das Token hinzufügen, das Sie vom Service-Aufruf erhalten haben

Haben Sie ein Protokoll darüber, was genau von Ihrem OAuth-Server angerufen wird? Wer ist der Dienstleister? Ich kann mir nicht vorstellen, dass er dieses Feature vermisst ...

    
mtraut 02.01.2011 10:37
quelle
1

Sie können den state-Parameter dafür verwenden, auch der auth-Server muss den Benutzer-Details-Service basierend auf nur dem Zugriffstoken bereitstellen.

    
Bassem Reda Zohdy 18.04.2013 05:27
quelle
0

Ich kann nicht erkennen, warum Sie eine ID vom OAuth-Provider an OAuth Consumer senden möchten. Kannst du ein bisschen mehr erklären, warum du das tun musst?

Wenn Sie Sitzungscookies mit Ihren Nutzern verknüpft haben, wissen Sie, welcher Benutzer zu Ihnen zurückkehrt (nach der Weiterleitung), da Sie eine Sitzung mit ihm führen können - er wird über den Browser weitergeleitet und sendet Ihr Cookie zurück.

Auch wenn der OAuthProvider Ihnen seine interne Benutzer-ID sendet (was unnötig und sehr unwahrscheinlich ist, denke ich), was werden Sie damit machen - es wird nicht mit Ihrer internen Website-Benutzer-ID übereinstimmen, es ist eine völlig andere Benutzer-ID ID für die Providerseite ... oder vielleicht kann ich deine Frage nicht gut beantworten ....

Mit freundlichen Grüßen

    
middlehut 03.01.2011 21:00
quelle

Tags und Links