Frage Wie entwerfe ich eine Datenbank zur Unterstützung von OpenID?


Ich überlege, OpenID zu implementieren, aber ich zeichne ein leeres, wie die Datenbank mit neuen / vorhandenen Benutzern aussehen würde. Wie macht stackoverflow das? Ich verstehe das Konzept, dass eine externe Site die Authentifizierung für mich durchführt, aber soweit ich Benutzerinformationen speichern muss, brauche ich Hilfe bei.


6
2018-04-01 20:52


Ursprung


Antworten:


Da dies eines der Top-Suchergebnisse bei der Suche nach OpenID ist   Datenbankstrukturen bei Google und der Plaxo - Link, auf den in der   vorherige Antwort gibt es nicht mehr. Ich habe das kopiert und eingefügt   Inhalt der Plaxo Anweisungen unten. Ich konnte sie bekommen   Verwenden der referenzierten Wayback-Maschine    Hier.   Bedenken Sie, dass ich wegen der 30000-Zeichen-Beschränkungen von StackOverflow bestimmte Abschnitte beschneiden muss, und Joseph Smarr einige Bilder in sein   Anweisungen, so dass Sie vielleicht auf die Wayback-Maschine Seite I aussehen möchten   verwiesen.                      -Jason

Ein Rezept für OpenID-Aktivierung Ihrer Site

Hergestellt von Joseph Smarr beim Plaxo am 18. Juli 2007.

Dies ist eine Schritt-für-Schritt Anleitung zur Implementierung OpenID Consumer-Side-Support mit einer Website, die bereits Benutzer mit Accounts hat. Es wird erläutert, wie Sie neuen Benutzern auf einfache Weise ermöglichen, sich mit Ihrer OpenID-URL bei einem Konto auf Ihrer Website anzumelden und vorhandenen Benutzern ihre OpenIDs anhängen zu lassen, damit sie sich mit ihnen anmelden können.

Ich habe diesen Leitfaden entwickelt, indem ich mit anderen OpenID - Entwicklern im Internet-Identitäts-Workshop und anderswo und durch Implementierung der OpenID-Unterstützung für Plaxo mit diesen Anweisungen. Ich habe auch gepostet detaillierte Screenshots von Plaxo Implementierung als Referenz. Ich beabsichtige, dass dieser Leitfaden klar und vollständig ist und den Best Practices folgt, aber wenn Sie Fragen oder Feedback haben, lassen Sie es mich bitte wissen bei ob_male ('joseph', 'plaxo.com'); oder indem Sie einen Kommentar abgeben Plaxos Blog.

Dieser Guide mag ein bisschen lang aussehen, aber ich hoffe, dass du ihn einfach durchgehen kannst, ohne viel nachzudenken, und du wirst komplett fertig sein, wenn du das Ende erreichst! :)

Überblick

Ich gehe davon aus, dass Ihre Website derzeit über Folgendes verfügt:

  • Eine Benutzerdatenbank mit Zeilen für jeden Benutzer
    • Jeder Benutzer hat eine eindeutige interne Benutzer-ID
    • Benutzer melden sich derzeit mit einem Nutzernamen / E-Mail und einem Passwort an
  • Ein Registrierungsablauf für die Anmeldung neuer Nutzer und die Erfassung grundlegender Profilinformationen
  • Eine Anmeldeseite zum Authentifizieren von Benutzern
    • Intern authentifizieren Sie Benutzer basierend auf Benutzername / E-Mail und Passwort, suchen ihre eindeutige Benutzer-ID und verwenden sie im Rest Ihrer Site
  • Eine Einstellungsseite für Benutzer zum Verwalten ihrer Kontoinformationen.

Wenn Ihre Website nicht so aussieht, sollten Sie trotzdem fortfahren können, aber einige der Abschnitte sind möglicherweise nicht relevant für Sie.

Snipped .. so überprüfen Sie die Wayback-Maschine Verbindung oben für den Rest.

Implementierungsdetails

  • Installieren Sie ein OpenID-Konsumentenbibliothek
    • Es gibt OpenID-Bibliotheken bereits verfügbar in vielen populären Programmiersprachen, die fast das ganze schwere Heben für Sie tun werden. Das Team bei JanRain Ich habe eine ganze Reihe von ihnen geschrieben und bin in der Regel sehr intelligent und kenntnisreich, wenn es um OpenID geht, also würden sie wahrscheinlich eine gute Quelle sein, wenn du hier Hilfe brauchst.
    • Je nach Bibliothek müssen Sie möglicherweise einen permanenten Speicher für Verknüpfungen mit OpenID-Anbieterwebsites bereitstellen. Im Wesentlichen speichert dies nur eine Zuordnung von einer Server / Handle-Zeichenfolge zu einer Zuordnungszeichenfolge. Sie müssen die Zuordnung mindestens für die Sitzung speichern (um eine OpenID-Authentifizierung zu überprüfen), aber idealerweise sollten Sie sie länger speichern, damit Sie nicht jedes Mal, wenn Sie zum OpenID-Anbieter weiterleiten, neu verknüpfen müssen in einer schnelleren Umleitung). Sie können Memcached, eine Datenbank oder jedes andere dauerhafte Speichermedium verwenden, auf das Sie Zugriff haben.
  • Erstelle eine neue OpenID-Datenbanktabelle
    • Verwenden Sie ein Schema wie dieses (das wird mit MySQL funktionieren, aber Sie müssen es vielleicht ein wenig optimieren, wenn Sie eine andere Datenbank verwenden oder wenn Sie Ihre internen Benutzer-IDs anders darstellen):
      create Tabelle user_openids (
        openid_url varchar (255) nicht null,
        Primärschlüssel (openid_url),
      
        user_id int nicht null,
        Index (Benutzer-ID)
      );
    • Behalten Sie eine einzige globale Tabelle bei, mit der Sie OpenIDs für alle Benutzer nachschlagen können (auch wenn Ihre Benutzer in mehrere Datenbanken partitioniert sind).
    • Speichern Sie OpenID-URLs in kanonisiert Formular für robustes Nachschlagen (d. h., wenn Benutzer beim nächsten Mal ihre OpenID etwas anders eingeben, können Sie sie immer noch ihrem Konto zuordnen). Die meisten OpenID-Bibliotheken bieten eine Canonicalization-Funktion, aber kurz sollten Sie http: // hinzufügen, wenn sie fehlt, und Sie sollten das Protokoll und die Domäne in Kleinbuchstaben konvertieren (aber NICHT den Rest der URL), also z. "WWW.AOL.COM/myOpenID" sollte als "http://www.aol.com/myOpenID" gespeichert werden. Sie sollten wahrscheinlich auch nachfolgende Schrägstriche von der URL entfernen.
    • Wenn Sie in der Regel über eine Datenbankzugriffsberechtigung verfügen, sollten Sie Ihrer Anwendung die folgenden Funktionen zur Verfügung stellen (in jedem Fall habe ich SQL entworfen, um die Funktion zu implementieren). Zur Erinnerung: Alle Funktionen, die OpenID als Eingabe verwenden, sollten sie kanonisch machen, bevor sie in der Datenbank nachgeschlagen werden.
      • GetUserId(openid_url)
        select user_id from user_openids where openid_url = openid_url 
      • GetOpenIDsByUser(Benutzeridentifikation)
        select openid_url from user_openids where user_id = Benutzeridentifikation 
      • Fügen Sie OpenID hinzu(openid_url, Benutzeridentifikation)
        insert into user_openids values (openid_url, Benutzeridentifikation) 
      • TrennenOpenID(openid_url, Benutzeridentifikation)
        delete from user_openids where openid_url = openid_url and user_id = Benutzeridentifikation 
      • DetachOpenIDsByUser(Benutzeridentifikation)
        delete from user_openids where user_id = user_id
  • Fügen Sie Ihre OpenID-Benutzeroberfläche hinzu Registrierungsseite
    • Fügen Sie Ihrer Registrierungsseite einen Bereich hinzu, in dem OpenID-Benutzer sich mit ihrer OpenID anmelden können. Das UI-Ziel sollte sein, dass OpenID-Benutzer leicht erkennen können, dass Ihre Site OpenID unterstützt, aber dass Benutzer ohne OpenID sich weiterhin normal registrieren können, ohne dass sie verwirrt werden. Sie können entweder ein OpenID-Eingabefeld direkt auf der Seite oder einen Link zu einer OpenID-Seite platzieren, auf der Benutzer ihre OpenID eingeben können.
    • Wo auch immer Sie es verwenden, sollten Sie die Community-Standards für das Benennen und Formatieren des Textfelds befolgen, in dem Benutzer ihre OpenID eingeben:
      • Verwenden Sie "openid_url" als die ID- und Namensattribute des Textfelds (dies ermöglicht es Plug-Ins, OpenID-Eingabefelder über verschiedene Websites hinweg leicht zu identifizieren und zu bearbeiten).
      • Ergänzen Sie die kleines OpenID-Logo als ein Hintergrundbild in das Textfeld, mit CSS wie folgt:
        Hintergrund: #FFFFFF URL ('/ images / openid-icon-small.gif') no-repeat Bildlauf 0pt 50%;
        Padding-links: 18px;
    • Es ist auch eine gute Idee, eine kurze Erklärung darüber zu geben, was OpenID ist und wie Ihre Benutzer es auf Ihrer Website verwenden können (da Sie wahrscheinlich neugierige Leute durchklicken werden, die sich das anschauen).
    • Wickeln Sie das OpenID-Textfeld in ein Formular ein, das an Ihr OpenID-Anmelde-CGI gesendet wird, das wir unten erstellen.
    • Nachdem Sie eine OpenID bereitgestellt und sich beim OpenID-Anbieter angemeldet haben, müssen Sie Ihren Nutzer mit einigen kleinen Optimierungen wieder auf Ihre Registrierungsseite umleiten. Zuerst sollten Sie die OpenID anzeigen, bei der sich der Benutzer registriert, vorzugsweise mit dem kleinen OpenID-Logo daneben, um es als OpenID zu identifizieren (siehe Screenshots unten für ein Beispiel). Zweitens sollten Sie den Benutzer NICHT nach einem seitenspezifischen Passwort fragen, da diese sich mit ihrer OpenID anmelden. Verstecken Sie also die Passwortfelder und stellen Sie sicher, dass Ihr Registrierungscode dies erlaubt (Sie müssen möglicherweise ein zufälliges Passwort hinter die Kulissen eingeben, wenn Ihr Code Passwort benötigt, zeigen Sie es einfach nicht dem Benutzer). [Hinweis: Es ist in Ordnung, wenn Nutzer später mithilfe der Seite mit den Kontoeinstellungen ein standortspezifisches Passwort eingeben. Der Hauptvorteil von OpenID-Nutzern besteht jedoch darin, dass sie nicht mehr verwendet werden müssen brauchen separate Anmeldeinformationen für jede von ihnen verwendete Website zu verwalten.]
    • Hier sind einige Screenshots, wie wir OpenID zu Plaxos Registrierungsfluss hinzugefügt haben:
       
  • Fügen Sie Ihre OpenID-Benutzeroberfläche hinzu Anmeldeseite
    • Fügen Sie Ihrer Anmeldeseite einen Bereich hinzu, in dem OpenID-Benutzer sich mit ihrer OpenID anmelden können. Dies funktioniert sowohl für bestehende Benutzer Ihrer Site, die eine OpenID an ihr Konto angehängt haben, als auch für neue Benutzer, die sich mit ihrer OpenID anmelden können (unter Verwendung des gleichen Ablaufs wie oben). Wie bei der Registrierungsseite sollte das UI-Ziel ein ausgewogenes Verhältnis zwischen Offenheit für OpenID-Benutzer sein, ohne die übrigen Benutzer zu sehr abzulenken oder zu verwirren. Sie sollten Ihre OpenID-Box, wie oben auf der Registrierungsseite angegeben, benennen und formatieren. Und wie oben sollte das Formular, das das OpenID-Eingabefeld umgibt, zu dem OpenID-Login-CGI gehen, das Sie gerade erstellen.
    • Zusätzlich zu Ihrer Hauptanmeldungsseite haben Sie möglicherweise auch eine Benutzerschnittstelle auf Ihrer Startseite oder an anderer Stelle. Sie sollten idealerweise eine Option bereitstellen, um sich mit OpenID an jeder Stelle anzumelden, an der Sie eine traditionelle Anmeldeoption bereitstellen.
    • Hier sind einige Screenshots, wie wir OpenID zu Plaxos Anmeldeseiten hinzugefügt haben:
       
  • Erstelle eine neue OpenID-Anmeldung Webseite / CGI
    • Ihr CGI sollte zwei grundlegende Eingabe- (Abfrage-) Parameter haben:
      • openid_url: die vom Benutzer eingegebene OpenID (für Registrierung, Anmeldung, Anhängen usw.)
      • aktionstyp: Die Operation, die der Benutzer ausführen möchte. Mögliche Werte werden sein Anmeldung, Komplett, anfügen, Liste, und löschen. (Wenn Sie Rails oder ein ähnliches System verwenden, könnten dies auch Controller-Methoden sein und somit Teil der URL selbst.)
    • Implementieren Sie die Anmeldung Aktion (Dies ist, wo die UI, die Sie zu den Registrierungs- und Anmelde-Flüssen hinzugefügt haben, an beide übermittelt wird)
      1. Schlagen Sie die bereitgestellte openid_url mit Hilfe der GetUserId Funktion oben beschrieben.
      2. Wenn die OpenID bereits einem Benutzer in Ihrem System zugeordnet ist, überprüfen Sie, ob der Benutzer derzeit bei Ihrer Site angemeldet ist.
        1. Wenn der Benutzer nicht angemeldet ist, versucht er, sich als vorhandener Benutzer anzumelden. Bereiten Sie sich also darauf vor, zu seinem OpenID - Anbieter umzuleiten, setzen Sie jedoch ein Flag, um den Anbieter NICHT nach Registrierungsinformationen zu fragen (da der Benutzer sich nicht für eine neues Konto).
        2. Wenn der Benutzer bereits angemeldet ist und diese OpenID bereits zu ihnen gehört (dh die OpenID-URL ist der gleichen Benutzer-ID zugeordnet wie der aktuell angemeldete Benutzer), müssen Sie nichts tun (dieser Benutzer ist bereits signiert in und schon OpenID angehängt, also ist das ein No-Op). Dies ist ein Randfall.
        3. Wenn der Benutzer bereits angemeldet ist, aber die OpenID zu a gehört anders Benutzer, zeigen Sie eine Fehlermeldung an, dass diese OpenID bereits von einem anderen Benutzer beansprucht wurde. Sie können dem Benutzer auch die Möglichkeit geben, sich abzumelden und es erneut zu versuchen. Dies ist ein Randfall.
      3. Wenn sich die OpenID derzeit NICHT in Ihrer Datenbank befindet, versucht der Benutzer, sich für ein neues Konto anzumelden. Bereiten Sie sich also darauf vor, zu seinem OpenID-Anbieter umzuleiten und nach Registrierungsinformationen zu fragen.
      4. Speichern Sie das bereitgestellte openid_url in Ihrer Sitzung, da Sie es sich merken müssen, wenn der OpenID-Provider zu Ihnen zurückleitet, und der Provider gibt es möglicherweise nicht an Sie zurück. Wenn Sie keine Sitzung haben, können Sie Ihre Datenbank benutzen, aber sie muss irgendwo persistent sein und vor Manipulation der Benutzer geschützt sein (d. H. Nicht in einem Cookie oder etwas, das vom Benutzer geändert oder gefälscht werden könnte).
        (Der Grund, warum Sie die angeforderte OpenID speichern müssen, ist, dass OpenID die Benutzer erlaubt delegieren ihre OpenID zu einem anderen Anbieter hinter den Kulissen. Zum Beispiel, wenn ich versuche, mich mit der OpenID josephsmarr.com anzumelden, kann ich tatsächlich haben delegiertDiese URL zu einer anderen OpenID wie jsmarr.myopenid.com, und wenn der Provider zu Ihnen zurückkehrt, um die Authentifizierung abzuschließen, müssen Sie sich daran erinnern, dass ich mich als josephsmarr.com und nicht als jsmarr.myopenid.com anmelden wollte. Zum Glück wird Ihre OpenID-Bibliothek dies wahrscheinlich für Sie übernehmen, aber Sie müssen die ursprünglich angeforderte OpenID in Ihrer Sitzung für jetzt behalten. Dies kann in der kommenden OpenID 2.0-Spezifikation gelöst werden.)
      5. Erstellen Sie die URL return_to für den OpenID-Anbieter, zu dem nach der Authentifizierung des Benutzers zurückzukehren. Dies wird Ihr OpenID Login CGI mit dem sein Komplett Aktion angegeben.
      6. Wenn Sie oben festgelegt haben, dass sich der Benutzer für ein neues Konto registriert, entscheiden Sie, welche Registrierungsinformationen angefordert werden sollen. Die meisten OpenID - Anbieter unterstützen die einfache RegistrierungserweiterungDies ist eine Liste mit allgemeinen Registrierungsfeldern, die Sie nach Bedarf oder optional für Ihre Site anfordern können, einschließlich vollständiger Name, E-Mail, Spitzname, Geschlecht, Geburtsdatum, Geschlecht, Postleitzahl, Land, Sprache und Zeitzone. Wenn Sie nach diesen Feldern fragen und der Benutzer zustimmt, diese anzugeben, können Sie diese vorab in Ihren Registrierungsablauf eingeben, wodurch Zeit und Ärger aus Ihrem Registrierungsprozess entfernt werden. Wenn Ihre OpenID-Consumer-Bibliothek native Unterstützung für die Anforderung von einfachen Registrierungsparametern bietet, prüfen Sie, ob sie eine allgemeine Möglichkeit zum Unterstützen von Erweiterungen haben. Im schlimmsten Fall können Sie sie vor dem Weiterleiten manuell zur generierten Weiterleitungs-URL hinzufügen.
      7. Anruf checkid_setup in Ihrer OpenID-Bibliothek zum Generieren der URL zum Weiterleiten an den OpenID-Anbieter des Benutzers. Übergeben Sie die vom Benutzer angegebene (canonicalized) OpenID und die oben erstellte URL return_to. Geben Sie gegebenenfalls auch die gewünschten Registrierungsinformationen ein. Abhängig von Ihrer Bibliothek müssen Sie möglicherweise einige Fehler von dieser Funktion abfangen und behandeln. Aber vorausgesetzt, dass alles gut läuft, erhalten Sie eine URL zurück, auf die Sie umleiten können.
      8. Lassen Sie Ihr CGI auf die angegebene URL umleiten, indem Sie eine serverseitige Weiterleitungsantwort ausgeben.
      9. Der Benutzer wird zur Website des OpenID-Anbieters weitergeleitet. Sie werden gebeten, sich anzumelden (es sei denn, sie haben sich kürzlich angemeldet). Sie werden gefragt, ob sie Ihrer Website vertrauen. Wenn Sie nach einfachen Registrierungsinformationen gefragt haben, werden sie gefragt, welche Informationen sie wünschen Mit dir teilen. Sobald dieser Prozess abgeschlossen ist, leitet der OpenID - Anbieter den Benutzer zurück an die von Ihnen angegebene return_to - URL, die es Ihnen dann ermöglicht, Ihre URL zu initiieren Komplett Aktion, um den Job zu beenden.

        Hier sind einige Screenshots der Anmeldung bei einem OpenID-Anbieter (in diesem Fall myopenid.com) und die Aufforderung, einige Registrierungsinformationen mit Plaxo zu teilen:
         
    • Implementieren Sie die Komplett Aktion (Hier wird der Benutzer umgeleitet, nachdem er sich bei seinem OpenID-Anbieter angemeldet hat):
      1. Wenn der OpenID-Anbieter zu Ihrer return_to-URL umleitet, fügen sie eine Reihe zusätzlicher Abfragezeichenfolgenparameter hinzu, die die Informationen enthalten, die zur Überprüfung der Benutzerauthentifizierung mit dieser OpenID erforderlich sind. Abhängig von der OpenID-Bibliothek, die Sie verwenden, müssen Sie diese möglicherweise in einer Datenstruktur sammeln, um sie an die Überprüfungsfunktion weiterzuleiten, oder sie kann dies für Sie tun.
      2. Holen Sie sich die OpenID, die der Benutzer ursprünglich von Ihrer Sitzung angefordert hat (Sie haben sie gespeichert, bevor Sie zum oben genannten OpenID-Provider weitergeleitet haben).
      3. Anruf id_res in Ihrer OpenID-Bibliothek, um die Authentifizierungsdaten zu überprüfen, die Sie vom OpenID-Anbieter erhalten haben. Übergeben Sie die OpenID, die der Benutzer ursprünglich angefordert hat, zusammen mit den Abfrageparametern nach Bedarf. Diese Funktion prüft, ob alles gut aussieht. Wenn Sie einen Fehler zurück erhalten, zeigen Sie Ihrem Benutzer eine entsprechende Fehlermeldung an. Ansonsten haben Sie nun bestätigt, dass der Benutzer die von Ihnen zur Verfügung gestellte OpenID authentifiziert hat.
      4. Optional: Nachdem Sie die OpenID erfolgreich verifiziert haben, möchten Sie möglicherweise ein dauerhaftes Cookie für Ihre Site mit der verwendeten OpenID setzen, damit Sie beim nächsten Besuch auf Ihrer Site erkennen, dass der Benutzer über eine OpenID verfügt und die OpenID-Box auf der Site vorfüllt Anmeldeseite Wenn Sie dies tun, löschen Sie den Cookie, wenn der Benutzer sich ausdrücklich abmeldet.
      5. Suchen Sie die verifizierte OpenID erneut mit der Taste GetUserId Funktion. Wenn Sie es nicht in Ihrer Datenbank finden, überprüfen Sie, ob der Benutzer derzeit auf Ihrer Site angemeldet ist. Wenn dies der Fall ist, führen Sie die anfügen Aktion unten, um diese OpenID an ihr bestehendes Konto anzuhängen. Andernfalls ist es an der Zeit, den Registrierungsprozess für ein neues Konto mit dieser OpenID zu starten. Beginnen Sie damit, die verifizierte OpenID in Ihrer Sitzung zu speichern, damit sich der Code zur Kontoerstellung daran erinnert, dass der Benutzer diese OpenID bereits verifiziert hat. (Verwenden Sie NICHT die gleiche Sitzungsvariable, die Sie zum Speichern der angefordert OpenID, da der Benutzer dort alles eingeben kann.)
        Leiten Sie dann Ihren Benutzer zu Ihrem Registrierungsablauf um und leiten Sie die einfachen Registrierungsdaten weiter, die Sie zurück erhalten haben (falls vorhanden). Wahrscheinlich müssen Sie die Felder, die von der einfachen Registrierung zurückgegeben werden, den Registrierungsparametern zuordnen, die Ihre Website normalerweise verwendet.
        • Wie oben beschrieben, sollte die Registrierungsseite die OpenID prominent in den Kontoinformationen anzeigen, und Sie sollten den Benutzer nicht bitten, ein Kennwort für Ihre Site einzugeben, da sie ihre OpenID verwenden, um sich anzumelden. Darüber hinaus sollten Sie vor Füllen Sie alle Registrierungsinformationen aus, die Sie von Ihrem OpenID-Anbieter erhalten haben. Es ist in Ordnung, nach zusätzlichen Registrierungsinformationen zu fragen und Ihre aktuellen Richtlinien beizubehalten, welche Felder erforderlich und optional sind. (Die Verwendung von OpenID sollte ein sein Beschleunigung für die Registrierung auf Ihrer Website, sollte aber nicht erfordern, dass Sie die von Ihnen benötigten Informationen ändern oder das normale Verhalten Ihrer Website ändern. Schließlich sollten Sie einen Link für bestehende Benutzer Ihres Dienstes bereitstellen, um diese OpenID an ihr vorhandenes Konto anzuhängen, sofern vorhanden. Dies wird den Fall von vorhandenen Benutzern behandeln, die nicht angemeldet waren und ihre OpenID eingegeben haben und sich nicht im Registrierungsfluss für neue Benutzer befinden. [Da dies nicht üblich ist, ist es besser, zu Beginn des Registrierungsablaufs nur einen kleinen Link zu haben, anstatt jeden Benutzer zu fragen, ob er ein neues Konto registrieren oder sich bei einem bestehenden Konto anmelden möchte OpenID.]
        • Wenn der Benutzer den Registrierungsablauf Ihrer Website abgeschlossen hat und Sie ein Benutzerkonto erstellt haben, hängen Sie die verifizierte OpenID an das neu erstellte Konto an Fügen Sie OpenID hinzu Funktion. [Wenn sich Ihre Benutzertabelle und Ihre OpenID-Tabelle in separaten Datenbanken befinden und nicht Teil derselben Transaktion sein können, besteht eine geringe Chance, dass der Befehl attach fehlschlägt und Sie ein verwaistes Benutzerkonto erhalten. Es gibt keine einfache Möglichkeit, dies in 100% der Fälle zu verhindern, aber da es selten ist und sich der Benutzer immer wieder anmelden kann, kann man in den meisten Fällen diesen Wettlauf ignorieren und nur auf das Beste hoffen.
      6. Wenn Sie festgestellt haben, dass die verifizierte OpenID mit einem vorhandenen Konto verknüpft wurde, können Sie den Nutzer jetzt wie gewohnt anmelden, wenn er sich mit Ihrer herkömmlichen Methode angemeldet hat. (Wenn der Benutzer zufällig bei einem anderen Konto angemeldet ist, melden Sie ihn ab und melden Sie ihn dann als Benutzer an, dem die OpenID angehängt ist, da er gerade bewiesen hat, dass er sie besitzt).
    • Implementieren Sie die anfügen Aktion (für bestehende Benutzer, um zusätzliche OpenIDs an ihr Konto anzuhängen):
    • (Diese Aktion wird als Teil der Komplett Aktion, wenn der Benutzer bereits angemeldet ist und gerade eine neue OpenID verifiziert hat. Stellen Sie daher sicher, dass der Benutzer angemeldet ist, bevor Sie diese Aktion aufrufen.)
    • Hängen Sie die verifizierte OpenID mit Ihrem Konto an das Konto des angemeldeten Benutzers an Fügen Sie OpenID hinzu Funktion.
    • Zeigen Sie eine Bestätigungsmeldung, dass diese OpenID jetzt angehängt wurde und sich ab sofort für die Anmeldung verwenden lässt. Überlegen Sie, auf die Liste Aktion, sodass der Benutzer diese OpenID jetzt in der Liste der angefügten OpenIDs für sein Konto sehen kann.

      Hier ist ein Screenshot der Bestätigungsseite von Plaxo:
    • Implementieren Sie die Liste Aktion (um einem angemeldeten Benutzer die OpenIDs anzuzeigen, die seinem Konto beigefügt sind):
      1. Erfordern, dass der Benutzer angemeldet ist (bei Bedarf zuerst über die Anmeldeseite umleiten).
      2. Rufen Sie die Liste der angefügten OpenIDs für den angemeldeten Benutzer ab, indem Sie Ihren GetOpenIDsByUser Funktion.
      3. Zeigen Sie die Liste der OpenIDs in einer Webseite mit einem Link von jedem, um es zu trennen, wenn der Benutzer möchte. Die Links rufen die löschen Aktion unten und übergeben Sie die OpenID zum Löschen als openid_url Parameter.
      4. Geben Sie einen Link oder ein Eingabefeld ein, um eine zusätzliche OpenID anzuhängen. Dies führt den Benutzer durch die Anmeldung und anfügen fließt (da der Benutzer bereits angemeldet ist) und endet wieder auf der Liste Seite.
      5. Wenn Ihre Website bereits über eine Seite mit allgemeinen Einstellungen verfügt, sollten Sie einen Link zu "Manage your OpenIDs" angeben, der darauf verweist Liste Seite. Sie können diese Funktionalität auch direkt auf Ihrer aktuellen Einstellungsseite einrichten.

        Hier ist ein Screenshot der Plaxo-Listenseite sowie Links von unseren aktuellen Einstellungsseiten:
         
    • Implementieren Sie die löschen Aktion (um eine OpenID von einem Benutzerkonto zu entfernen):
      1. Erfordern, dass der Benutzer angemeldet ist (bei Bedarf zuerst über die Anmeldeseite umleiten).
      2. Optional: Überprüfen Sie, ob der Benutzer versucht, die letzten Anmeldeinformationen zu löschen, mit denen er sich bei Ihrer Site anmelden konnte. Wenn der Benutzer auf Ihrer Site kein normales Passwort eingerichtet hat und dies die einzige OpenID ist, die an sein Konto angefügt ist, würde das Löschen der letzten OpenID diese für immer aus ihrem Konto sperren. Wenn Sie in dieser Situation keine gute Methode zum Wiederherstellen von Benutzern haben, zeigen Sie eine Fehlermeldung an, wenn der Benutzer versucht, die zuletzt angefügten Anmeldeinformationen zu löschen. Im Wesentlichen lautet die Aussage "Sie können die letzte OpenID, die Ihrem Konto beigefügt ist, nicht löschen Sie können sich nicht anmelden. Fügen Sie zuerst eine andere OpenID hinzu oder erstellen Sie ein Passwort für diese Site. "
      3. Vorausgesetzt, es ist in Ordnung, fortzufahren, trennen Sie die OpenID, die vom Parameter openid_url bereitgestellt wird, vom Konto des angemeldeten Benutzers, indem Sie den Befehl aufrufen TrennenOpenID Funktion. Wenn die bereitgestellte OpenID derzeit nicht dem Konto des Benutzers zugeordnet ist, können Sie einen Fehler anzeigen oder ihn einfach als Nicht-Op-Erfolg behandeln.
      4. Zeigen Sie eine Bestätigungsmeldung, dass diese OpenID jetzt getrennt wurde und nicht mehr für die Anmeldung auf Ihrer Site verwendet werden kann. Sagen Sie dem Benutzer, dass er, wenn er diese OpenID erneut anhängen möchte, den normalen Verifizierungsprozess durchlaufen muss, um ihn erneut anzuhängen. Überlegen Sie, auf die Liste Aktion, damit der Benutzer die aktualisierte Liste der OpenIDs sehen kann, die seinem Konto beigefügt sind.

        Hier sind einige Screenshots zum Entfernen einer OpenID von einem Plaxo-Konto:
         
    • Fügen Sie Ihrer Löschbenutzerroutine einen Hook hinzu Entferne alle OpenIDs von diesem Benutzer.
      1. Wenn Ihre Website derzeit Benutzer ihre Konten löschen lässt, ist es wichtig, dass Sie alle OpenIDs trennen, die angehängt wurden, damit sie zu einem anderen Konto später erneut verknüpft werden können. Sie können dies tun, indem Sie Ihre anrufen DetachOpenIDsByUser Funktion innerhalb Ihrer Lösch-Benutzerroutine oder durch anderweitiges Auslösen dieser Funktion beim Löschen eines Benutzers.

    ...und du bist fertig!

    Snipped .. so überprüfen Sie die Wayback-Maschine Verbindung oben für den Rest. Joseph geht   durch einige Best Practices für OpenID, aber an dieser Stelle sollten Sie arbeiten   Beispiel.   


    13
    2017-08-14 17:42