2016-11-30 4 views
0

Wir hosten verschiedene Websites/Webapplikationen. Im Moment muss sich jeder Benutzer bei jeder Anwendung anmelden. Jede Anwendung hat ihren eigenen DB mit User/PW/Permissions.SSO für verschiedene Websites mit eigenen DBs für Berechtigungen

Ich möchte eine Single-Sign-On-Lösung erhalten, die nur die Authentifizierung und den Rest wie Benutzerberechtigungen aus der Anwendungs-DB gelesen werden soll. Die Authentifizierung sollte nur funktionieren, wenn der Benutzer in der Anwendungs-DB existiert. Wenn der Benutzer in einer Anwendung "A" angemeldet ist und die App "B" öffnet, sollte er nicht erneut zur Anmeldung aufgefordert werden. Ich habe mir simplesamlphp angeschaut, aber ich finde keine Möglichkeit, die Anwendungs-DB nach verschiedenen Anwendungen für einen bestehenden Benutzer zu durchsuchen und ihn dann beim IdP einzuloggen.

Antwort

0

Mit der SQL authentication module können Sie eine Datenbank für die Authentifizierung verwenden. In Ihrem Fall haben Sie mehrere Benutzerdatenbanken. Woher wissen Sie, welche Datenbank zur Authentifizierung eines Benutzers verwendet wird? Wenn Sie alle automatisch überprüfen möchten, müssen Sie ein eigenes Authentifizierungsmodul erstellen. Wenn der Benutzer die Authentifizierungsquelle auswählt, können Sie Multiauth verwenden.

Andere Dinge zu beachten ist, dass Sie Ihre Anwendungen auch als SAML-Dienstanbieter aktualisieren müssen. Die Schwierigkeit dabei hängt wirklich von der Anwendung ab. Manche unterstützen SAML standardmäßig, andere erlauben es Ihnen, die Authentifizierung zu externalisieren und manche unterstützen sie überhaupt nicht.

+0

Danke für die Antwort. Ich habe etwas über WAYF (Wo kommst du her) gelesen, welches entdeckt, von welcher Anwendung du kommst und leitet dich auf WAYF zu verschiedenen IDPs weiter. Dies würde bedeuten, dass jede Anwendung ihren eigenen IDP hat, der das SQL-Modul für ihre lokale DB verwendet. Aber wo speichert Simplesamlphp die aktiven Sitzungen? Ist es möglich, aktive Sessions/Tokens von den verschiedenen IDPs in eine zentrale "active session DB" zu schreiben? Benutzernamen in den verschiedenen Anwendungen sind immer gleich der Nachname. – Nico

+0

SSP speichert die Sitzung lokal. Sie können es konfigurieren, um sie in einem DB oder in Memcache zu speichern, wenn Sie sie teilen möchten. Ich bin mir nicht sicher, ob und wie funktioniert die Freigabe zwischen IdPs mit verschiedenen Konfigurationen. Es sieht so aus, als hätten Sie zwei gegensätzliche Ziele: Sie haben separate IdPs pro App und teilen eine IdP-Sitzung unter allen IdPs. Wenn das Teilen wichtig ist, denke ich, dass es besser ist, ein einzelnes IdP zu haben (und MultiAuth oder ein benutzerdefiniertes Modul zu verwenden) und dann authz in der App auszuführen, oder wenn nötig, schreibe ein Modul dafür. – Patrick

Verwandte Themen