2009-05-05 7 views
4

Betrachten Sie dieses Szenario. Ich habe meine eigene Website, die ich als meine Kennung verwende, aber ich benutze einen OpenID Provider von Drittanbietern (in meinem Fall Yahoo), wie beschrieben here, um auf Relying Party (RP) -Webseiten wie stackoverflow und sourceforge einzuloggen.Wie funktioniert die OpenID-Delegierung auf der vertrauenden Seite? Haben die Spezifikationen in letzter Zeit geändert?

Es schien ein kluger Schachzug zu sein:

  • Ich bin nicht mit einem OpenID-Provider eingeschlossen, da, wenn/falls Yahoo bietet den Service nicht mehr, oder wird es aufzuladen beginnen, oder ich wird sie nicht mehr vertrauen, kann ich Provider wechseln schmerzfrei
  • ich auf meinem Server ein OpenID-Provider nicht die Wirtschafts-, Verwaltungs- und Sicherheitslast haben die Installation und Wartung

Frage

Wie soll das RP funktionieren? Mein Verständnis ist, dass es die Kennung I bereitstellen sollte, und den Provider (Yahoo) nur zur Authentifizierung (und nicht zur Identifikation) verwenden. Ist das korrekt? Hat sich in letzter Zeit etwas geändert? Nur klar zu sein, meine ich, dass meine Identifizierung

http://www.mysite.com/myPreferredUrl

und nicht

https://me.yahoo.com/myYahooId sein soll (das ist, wo meine Website, um die Authentifizierung „umleiten“, wie in der oben genannten Website beschrieben)

Seitennotiz

Ich stelle diese Frage auch, weil die Dinge gerade jetzt gebrochen zu sein scheinen (sie waren in Ordnung vor ein paar Monaten). Wenn ich versuche, mich in stackoverflow anzumelden, schreibe ich die mysite.com-URL, ich werde korrekt auf die Yahoo-Website "umgeleitet", auf der ich mich anmelde, sie fragt mich, ob ich "stackoverflow" fortsetzen möchte, sage ich ja, es "umleitet" und auf der stackoverflow Seite sehe ich "Dies ist eine OpenID, die wir noch nicht gesehen haben", es zeigt meine Yahoo ID und ich bin eigentlich ausgesperrt!

Ist es ein Fehler, oder fehlt mir etwas?

PS: Wenn Sie sich fragen, wie ich diese Frage hier schreibe, ist dies, weil auf einer der vielen Maschinen, die ich verwenden, noch ein Browser ein gültiges Cookie hat ....

EDIT: Andrew Arnott Antwort unten vorgeschlagen einen Weg, um mein Problem zu beheben (dh zu einem anderen Anbieter wechseln). Aber ich bin immer noch an einigen Details interessiert: Was hat sich von OpenID 1.1 zu 2.0 geändert? Warum in den Spezifikationen wurde gewählt, um den Provider die Delegation "brechen" lassen? Je mehr Sie erklären, desto besser sind die Chancen, dass Ihre Antwort akzeptiert wird.

+0

Die folgenden Links könnten etwas Licht werfen, aber ich bin immer noch interessiert an einer vollständigeren Antwort: http://developer.yahoo.net/forum/index .php? showtopic = 607 http://openid.net/pipermail/general/2008-November/006468.html – Davide

+0

hinzugefügt ein bisschen zu meiner Antwort, aber das ist alles was ich sagen kann. Ich denke, dass Ihre Frage neu ausgerichtet werden sollte, wenn meine Antwort nicht gerecht beantwortet, was Ihre Frage ist. –

+0

Nur ein weiterer Datenpunkt. Blogger.com scheint nicht ordnungsgemäß mit der Delegierung zu funktionieren, es sei denn, Sie fügen zusätzlich zu den Tags der Version 1 die Verknüpfungs-Tags openid2.provider und openid2.local_id hinzu. Ohne die Spec-Tags der Version 2 wird die Kennung des Providers verwendet, die nicht der angegebenen ist. Ich weiß nicht, ob dies Google oder etwas in der OpenID 2-Spezifikation ist. –

Antwort

4

Ich glaube, Andrew's Antwort ist ziemlich genau. Die einzige Sache, die ich hinzufügen kann, ist ein wenig darüber, wie die v2.0-Spezifikation endete, wie es tat, so dass der Anbieter wählen konnte, nicht mit Delegierung zu arbeiten. Ich denke, einer der Motivatoren war die Server-gesteuerte Identitätsauswahl, bei der der Benutzer nur "yahoo.com" liefert (oder den Yahoo-Button anklickt), und dann kommt seine gewählte ID vom Server in der id_res-Antwort zurück. Dies ermöglicht dem Server beispielsweise, eine Auswahl zu treffen, welche ID gesendet werden soll (wie Yahoo) oder eine eindeutige Kennung an jedes RP zu senden (wie Google).

Es bedeutet auch, dass alle notwendigen Informationen in einer id_res Antwort sind, was bedeutet, dass der RP nicht den Zustand von seiner checkid Anfrage speichern muss, um die Antwort zu verarbeiten. Tatsächlich könnte ein Anbieter eine Antwort direkt an die RP schicken, ohne dass der RP sie mit einer Anfrage von checkid überhaupt initiieren würde.

Ein Anbieter von v1.x war sich gar nicht bewusst, wann die Delegierung am Abend stattfand. Dieser Entwurf verhinderte, dass ein Anbieter die Delegierung überhaupt nicht unterstützte, sondern auch für einige Probleme mit der Benutzeroberfläche. Sie würden fragen, ob Sie die ID "joe.coolprovider.com" angeben möchten, als Sie tatsächlich Ihre delegierte "joesmith.org" ID verwendet haben.

Also, da ist der Kompromiss. Die Delegierung ist weiterhin möglich, so dass die Hoffnung besteht, dass Benutzer, die wirklich Delegation wünschen (die, verglichen mit der Anzahl der Benutzer dieser großen Websites, in den Schatten gestellt werden) Anbieter auswählen können, die die benötigten Funktionen bieten. (Mit anderen Worten, lassen Sie den Markt kämpfen es aus.)

+0

Danke, das sind die Details, die ich wissen wollte. Ich persönlich denke, dass jeder Delegationen von einer Domäne, die er kontrolliert, wirklich nutzen sollte, anstatt sich auf eine "große Seite" zu verlassen, die seine Entscheidung ändern könnte und den Benutzer nicht nur ein einziges Konto verlieren lässt, sondern jedes andere Konto, das er erstellt hat überall. Nun, das ist eine andere Geschichte. – Davide

6

Ich glaube nicht, dass Yahoo OpenID Delegierung unterstützt. Das heißt, StackOverflow und andere RPs können die Erkennung auf Ihrem eigenen Bezeichner durchführen und die Delegierungsauthentifizierungsanfrage korrekt einrichten, aber Yahoo könnte (vermutlich entgegen der Spezifikation) wählen, eine Identitätszusicherung für ihre eigene Bezeichner zu senden, statt die von der RP.

Die Spezifikationen wurden nicht von OpenID 1.1 zu 2.0 geändert. Die Spezifikationen schlagen nicht vor oder unterstützen das Verhalten von Yahoo !, und nur Yahoo kann autoritativ ihre Argumentation kommentieren.

StackOverflow-Delegierung funktioniert noch. Yahoo hat dich anscheinend kaputt gemacht. Ich schlage vor, Sie nutzen, was die Delegation gekauft hat, indem Sie ändern, an wen Sie die Authentifizierung delegieren. www.myopenid.com zum Beispiel unterstützt die Delegierung. Wenn Sie Ihren eigenen Bezeichner so ändern, dass er auf diesen verweist, sollten Sie in der Lage sein, StackOverflow wieder als Ihr altes Selbst zu verwenden. :)

+1

Danke für den Vorschlag. Ich werde das versuchen und hier berichten, wenn es funktioniert. Aber bitte erläutern Sie, was der RP (und der Provider, ich dachte, es war nur der RP) tun sollte, um die Delegation richtig zu unterstützen. Ich konnte nicht genug Informationen online finden. – Davide

+1

Der RP sollte eine Authentifizierungsanfrage mit openid.claimed_id an den erkannten Bezeichner (den, den Sie kontrollieren) und openid.identity an den zu delegierenden Bezeichner (Ihre Yahoo! zugewiesene OpenID) senden. Das OP SOLLTEN die openid.claimed_id gleich halten (außer im Fall der gerichteten Identität, die dies nicht ist) und verlangen, dass der in der openid.identity angegebene Benutzer derjenige ist, der bei Yahoo angemeldet ist, bevor er die Assertion sendet. –

+0

Ja, es hat sich herausgestellt, dass MyOpenID funktioniert. Ich stimme Ihrer Frage zu, aber nicht als akzeptiert, da ich mehr Details sehen möchte. – Davide