2009-08-29 3 views
19

Ich wurde vor kurzem beauftragt, an einer Anwendung zu arbeiten, die Facebook-Connect als einen seiner Authentifizierungsmechanismen erfordert.Facebook-Verbindung oder OpenID? Aus der Perspektive eines Entwicklers

Ich arbeite an meiner Facebook-Connect-Lösung und stelle fest, dass es ein Single-Sign-On-Authentifizierungsschema implementiert. Wenn Sie sich bei einer Website anmelden, sind Sie bei allen angemeldet. Persönlich mag ich den Ansatz nicht und finde, dass es schwierig (nicht unmöglich) ist, mit ihm zu arbeiten, wenn er versucht, alle Authentifizierungssysteme durch einen einzigen Prozess zu trichterieren, über den Sie (der Entwickler) die Kontrolle haben. Ich denke auch, dass es unnötig security issues (see Risks of Internet Deployment) einführt, nur um die Benutzerfreundlichkeit etwas zu verbessern.

Während Strategien mit der Technologie zu arbeiten, forschen, ich habe bemerkt, dass die Blogosphäre alles hat aber gesalbt Facebook-Connect als der heilige Gral der Authentifizierung, die jeweils Meinung andere Echo und hoch und stark lautstark, dass ‚OpenID ist zu kompliziert‘ . Zur gleichen Zeit habe ich nicht wirklich viele prominente Entwickler und Sicherheitsexperten gesehen, die Fahnen aufstellen oder ihre Meinung dazu äußern. Meine einzige Erfahrung mit OpenID ist mit StackOverflow und verwandten Websites. Ich hatte auch eine harte Zeit zu verstehen, was es zuerst war, aber sobald ich erkannte, dass ich mich mit meinen Google-Anmeldeinformationen einloggen konnte, erwies sich die Erfahrung als wirklich reibungslos.

Bin ich paranoid oder vermisse etwas, das jeder hat? Ist Facebook-Connect wirklich eine bessere Alternative zu OpenID, oder trinkt jeder jemandes Kool Aid?


EDIT:

Nachdem die Arbeit an diesem bestätige ich, dass die Facebook-Connect-Login-Schema weniger als ideal ist. Das ganze iframe/js/cookie/reload Ding ist hässlich und kann leicht problematisch werden. Die Integration von fb-Login in ein bestehendes Authentifizierungssystem ist eine Übung für sich. Sie müssen Kompromisse eingehen. Ich müsste einen ganz anderen Artikel schreiben, um zu erklären, wie ich es gemacht habe.

Facebook scheint ein bisschen besessen von Single Sign-On für mich zu sein. Die meisten Leute sind sich nicht bewusst, dass Facebook OpenID für ihre eigene Website aktiviert hat, aber selbst die Art, wie sie es implementiert haben, ist die Emulation von SSO und macht es ein wenig sinnlos. Die Art, wie ich dachte, dass OpenID funktionieren sollte: Sie gehen auf eine neue Website, wenn Sie ein OpenId-Konto haben, geben Sie die URL ein, loggen Sie sich bei Ihrem Anbieter ein und Sie sind in. Sie können dann weitere Informationen vervollständigen.

Fb bietet Ihnen nicht die OpenID-Anmeldung im Vordergrund. Stattdessen müssen Sie sich erst registrieren und anmelden, dann zu Kontoeinstellungen gehen und unter Verknüpfte Konten einen OpenID-Anbieter auswählen. Im Gegensatz zu StackOverflow, das den Punkt versteht, können Sie sich bei Facebook jedoch nur mit Ihrer OpenID anmelden, wenn Sie Ihren Provider anweisen, sich an diese Einstellung zu erinnern. Warum? Es macht es mehr SSO-ähnlich. Wenn Sie die Google Box, die sich erinnern soll, nicht überprüfen, funktioniert OpenID nicht auf Facebook.

Der Login beiseite, funktioniert facebook-connect im Allgemeinen, aber es gibt noch viele Ecken zu runden. Ein paar Dinge, die mich dazu brachten, meine Haare zu ziehen und zu verfluchen:

  • Die Facebook-Dokumentation ist verstreut und nicht richtig gestrafft. Innerhalb der ersten Stunde nach dem Öffnen haben Sie mindestens 10 Tabs in Ihrem Browser geöffnet. Wenn Sie auf interessante Themen gestoßen sind, die Ihrer Meinung nach in Zukunft nützlich sein könnten, stellen Sie sicher, dass Sie sie mit einem Lesezeichen versehen. Verlassen Sie sich nicht auf Navigationen, um sie wiederzufinden, da Schlüsselartikel manchmal tief vergraben sind. Ich weiß, dass der Wiki-Ansatz zum Dokumentieren von APIs viele Projekte in letzter Zeit faul gemacht hat, aber gewöhnlich ist dies Facebook. Sie sollten die Mittel haben, ein Team einzustellen, um angemessene Benutzerhandbücher bereitzustellen. Denken Sie also daran, sich einen schönen Ordner mit Lesezeichen für Facebook zu erstellen, bevor Sie beginnen.
  • Es gibt viele Methoden in der API, viel Glück, ein Beispiel zu finden, wie man sie benutzt, man muss sich auf Instinkt verlassen.
  • oft, wenn etwas nicht funktioniert, wie Sie es wünschen, niemand weiß warum. Beim Besuch von Forumseiten werden Erklärungen in Form von Hypothesen und Gerüchten gegeben. z.B. Warum haben manche Anwendungen bei der Anmeldung ein Popup-Anmeldefenster, wenn andere einen modalen js-Dialog haben? Ist es möglich, dieses Verhalten zu kontrollieren? niemand ist sicher. Es wird gemunkelt, dass Facebook einen Test durchführt, ohne dass jemand davon erfährt.
  • nicht alles funktioniert wie beworben. d. h., Sie könnten dazu ermutigt werden, eine Funktion zu verwenden, wertvolle Zeit damit zu verschwenden, sie zu implementieren, zu debuggen und dann herauszufinden, dass sie nicht mit facebook-connect funktioniert, wenn Sie sie in einen try/catch-Ausnahme-Handler setzen. z.B. feed.publishUserAction.
  • facebook versucht zu hart, benutzerfreundlich zu sein. Sie verschwenden wertvolle Ressourcen, indem sie eine Automagie-API einsetzen, die nur halb so lange funktioniert (xfbml), anstatt Entwickler dazu anzuregen, ihr hart erarbeitetes Wissen zu nutzen, indem sie die grundlegendsten Dinge verwenden, die die meiste Zeit funktionieren (pseudo sql + html). z.B. Ich verschwendete Zeit damit, eine Kombination aus ajax/xfbml/js zu verwenden, um Freunde von ihrem Server zu holen. Es würde für ein paar Anfragen funktionieren und dann aufhören zu arbeiten. Ich entschied mich dann, die Daten direkt aus ihrem db mit ihrer Facebook-Abfragesprache (fql) zu ziehen und mein eigenes Markup in HTML zu erstellen. arbeitete 100%. Mein Rat an Sie, wenn Sie ein echter Entwickler sind, kaufen Sie nicht in das "alles ist einfach" Mantra, dass Facebook versucht, jeden zu füttern, ist es nicht. Machen Sie sich nicht nur mit der Facebook-Programmiersprache (PHP, Python, Java, usw.) Ihrer Programmierplattform vertraut, sondern lernen Sie auch, was Sie direkt von Ihrem Server mit fql abrufen können und was Sie mit dem Browser tun können (JS Client API) verwirrt mit den fbjs). Sie können gut finden, dass die späteren 2 alles sind, was Sie brauchen, um die meisten Dinge zu tun.

Ich bin mir sicher, die Liste endet nicht dort, aber von der Spitze meines Kopfes ist es hier.

+0

Große Frage! – typeoneerror

+0

@mike, ich bin damit einverstanden, es einfach zu halten - benutze nur FQL und die Javascript API wann immer es möglich ist. Das mache ich mit meiner Friend-Locator-Web-App. –

Antwort

6

Achtung: starke Meinungen folgen.

Ja, sie trinken die Kool-Aid. Facebook Connect ist ein proprietäres, Provider-abhängiges Single Sign-On plus mehr. Facebook geht unter oder wird als unwürdig angesehen und du bist abgespritzt.

OpenID umgeht das.Es hat derzeit große Probleme mit der Benutzererfahrung, aber langfristig ist es eine bessere Lösung, da es das System von der Abhängigkeit (und dem Filtern des gesamten Datenverkehrs) von einem einzigen Anbieter befreit. Außerdem scheinen seine Spezifikation und Implementierung viel sauberer zu sein - nichts von diesem JavaScript/IFrame-Zeug. Einfach nur HTTP-Anfragen und Redirects. Dies gibt Ihnen auch eine viel bessere Browser-Kompatibilität.

Facebook Connect behoben das Problem der Benutzerfreundlichkeit, aber auf Kosten der Browser-Unterstützung und Anbieterwahl. Es ist ein kurzfristiger pragmatischer Gewinn, aber ich denke, dass es langfristig keine gute Idee ist.

2

Das Single Sign-On-Schema ist mittlerweile bei großen Apps ziemlich verbreitet. Wenn Sie sich bei Google Mail anmelden, sind Sie bei allen Google-Produkten angemeldet. Ich denke, dass es auf eine Art Sinn macht, besonders wenn die Apps miteinander verbunden sind, ein wichtiger Service sind und der Provider die besten Sicherheitsleute hat, die hinter den Kulissen arbeiten.

Jetzt für OpenID, ich denke, es ist auch eine gute Idee, aber OpenID ist immer noch nicht sehr zugänglich. Es sollte die Anmeldung für kleinere und mittlere Websites revolutionieren, hat dies aber nicht getan. Es gibt viele Websites, die es verwenden, aber anscheinend nicht genug. Die meisten Websites verwenden immer noch ihre eigenen Anmeldeverfahren, nennen es Lethargie oder Unruhe bei einem separaten Anbieter.

Aber ich denke, früher oder später wird etwas wie OpenID entstehen, aber damit es funktioniert braucht einen großen Schub dahinter. Jemand wie Google.

Stellen Sie sich vor, Sie könnten sich mit Ihrer Google ID anmelden.

Vorerst ich glaube, Sie brauchen nicht mit Facebook-Connect unbequem sein, aber ich empfehle OpenID obwohl ich es selbst noch nicht verwenden :) (Lethargie)

+0

Ich bin mit Single Sign On in einem Netzwerk von verwandten Websites vertraut. Ich verstehe einfach nicht, dass meine Website als Teil eines solchen Netzwerks behandelt werden soll, wenn alles, was ich will, der Authentifizierungsprozess ist. Btw, Sie können sich mit Ihrer Google ID bei SO anmelden. Mein Punkt ist, dass selbst wenn Ihr Gmail-Fenster rund um die Uhr geöffnet ist, wenn Sie versuchen, sich bei SO anzumelden, Sie nach Ihrem Benutzernamen/Passwort gefragt werden. Als Entwickler mag ich das, weil ich ein bestimmtes Flag erhalte, mit dem ich ein Profil richtig initialisieren kann. –

+0

Ich denke, OpenID hat weniger ein "Netzwerk Login" Gefühl als Facebook Connect hat, für besser oder schlechter. Persönlich ärgere ich mich, dass Facebook ein eigenes Protokoll erfunden hat und nicht mit OpenID. Ich hoffe, dass sie schließlich eine völlig zuverlässige OpenID Provider * und * Relying Party sein werden. Mit dieser Voreingenommenheit empfehle ich Ihnen, die OpenID-Route zu wählen. –

+0

Manchmal macht Google Sie erneut anmelden (aber es merkt sich Ihren Namen), wenn Sie auf die anderen Dienste von ihnen zugreifen, vor allem, wenn Sie das Produkt zuvor nicht zugegriffen haben. Das ist meiner Meinung nach eine gute Sache. – Neo42

0

Haben Sie sich Google Friend Connect angesehen? Es ist vergleichbar mit Facebook Connect, aber es basiert auf Open ID und ist daher nicht vollständig proprietär für Google. Es scheint auch die Probleme mit der Open ID-Benutzererfahrung zu lösen.

rpxnow.com auch eine ziemlich gute Arbeit, das Open ID-Benutzererlebnis Problem zu lösen.

Verwandte Themen