Frage

Wie würden Sie ein System mit folgenden Zielen implementieren:

  • Authentifizierung verwalten, Genehmigung für Hunderttausende von bestehende Benutzer zur Zeit eng integriert mit einem 3. Anwendung der Partei Anbieter (Wir wollen diese Benutzer in etwas heraus sprengen wir verwalten und unsere Apps gegen es funktioniert, und unsere 3rd-Party-Anbieter arbeiten dagegen).
  • Verwalten Profilinformationen an die Benutzer verknüpft
  • Muss in der Lage sein, von einem beliebigen Anzahl von Web-Anwendungen zugegriffen werden soll, auf fast jede Plattform (Windows, * nichts, PHP, ASP / C #, Python / Django, et cetera).

Hier einige Beispielimplementierungen:

  • LDAP / AD-Server alles zu verwalten. Verwenden Sie benutzerdefinierte Schema für alle Profildaten. Alles kann authentifiziert gegen LDAP / AD und wir können alle Arten von ACLs und Profildaten in einem benutzerdefinierten Schema speichern.
  • Verwenden Sie LDAP / AD für die Authentifizierung nur, LDAP-Benutzer zu einem robusteste Profil / Autorisierungs-Server mit irgendeiner Art von traditioneller Datenbank (MSSQL / PostgreSQL / MySQL) oder Dokument basierte DB (CouchDB, SimpleDB, et cetera) binden. Verwenden Sie LDAP für die Autorisierung, dann drücken Sie die DB für fortgeschrittenere Sachen.
  • Verwenden Sie eine traditionelle Datenbank (Relational oder Dokument) für alles.

Sind diese drei die besten? Gibt es andere Lösungen, die die Ziele oben und sind leichter passen zu implementieren?

** sollte ich, dass fast alle Anwendungen hinzufügen, die gegen die Benutzerdatenbank wird die Authentifizierung wird unter unserer Kontrolle sein. Die einsamen paar Außenseiter werden die Anwendungen sein, die wir die aktuelle Benutzerdatenbank von und vielleicht 1 oder 2 andere sind zu entfernen. Nichts ist so breit wie einen OpenID-Server benötigen.

Es ist auch wichtig zu wissen, dass viele dieser Benutzer diese Konten für 5-8 Jahre gehabt haben und wissen, dass ihre Logins und Passwörter, und so weiter.

War es hilfreich?

Lösung

Es gibt einen Unterschied zwischen Authentifizierung und Autorisierung / Profilierung so nicht beide unbedingt zwingen, in ein einziges Werkzeug. Ihre zweite Lösung der Verwendung von LDAP für die Authentifizierung und eine DB für die Zulassung scheint robuster als die LDAP-Daten durch den Benutzer gesteuert wird, und die DB würde von einem Admin gesteuert werden. Letzteres würde morphen wahrscheinlich in Struktur und Komplexität im Laufe der Zeit, aber die Authentifizierung ist nur, dass die Authentifizierung. Die Trennung dieser Funktionen wird sich besser handhabbar.

Andere Tipps

Wenn Sie eine vorhandene ActiveDirectory- Infrastruktur haben, dass der Weg zu gehen. Dies ist besonders vorteilhaft für Unternehmen, die bereits gehabt haben, Windows-Server zur Authentifizierung einzurichten. Wenn dies der Fall ist, ich bin Neigung in Richtung Ihrer ersten Aufzählungspunkt in „Beispielimplementierungen“.

Ansonsten wird es ein Wurf-up zwischen AD und Open Source LDAP-Optionen sein.

Es ist vielleicht nicht lebensfähig sein, Ihr eigenes Authentifizierungsschema für Single-Sign-on zu rollen (vor allem die hohe Menge an Dokumentation und Integrationsarbeit Erwägen Sie tun können müssen), und offensichtlich bündeln Sie nicht Ihre Authentifizierungsserver mit einem der Anwendungen, die auf dem System ausgeführt wird (da Sie wollen, dass es unabhängig von der Last solcher Anwendungen zu werden in der Lage sein).

Goodluck!

Verwenden Sie LDAP / AD für die Authentifizierung nur, LDAP-Benutzer zu einem robusteste Profil / Autorisierungs-Server mit irgendeiner Art von traditioneller Datenbank (MSSQL / PostgreSQL / MySQL) oder Dokument basierte DB (CouchDB, SimpleDB, et cetera) binden. Verwenden Sie LDAP für die Autorisierung, dann drücken Sie die DB für fortgeschrittenere Sachen.

Wir haben verschiedene Standorte mit rund 100k Benutzer und sie alle arbeiten mit normalen Datenbanken. Wenn die meisten Anwendungen können die DB-Zugriff können Sie diese Lösung verwenden.

Sie können jederzeit Ihre eigene OpenID -Server implementieren. Es gibt bereits eine Python-Bibliothek für OpenID so ist es ziemlich einfach sein sollte.

Natürlich müssen Sie nicht Logins von anderen Servern in Ihren Anwendungen autorisiert akzeptieren. Akzeptieren Anmeldeinformationen autorisiert nur von Ihrem eigenen Server.

Edit: Ich habe eine Implementierung von OpenID-Server-Protokoll in Django gefunden .

Edit2: Es gibt einen offensichtlichen Vorteil OpenID bei der Umsetzung für die Benutzer. Sie werden in der Lage sein, melden Sie sich mit ihren Anmeldungen Stackoverflow: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top