Frage

Was ist die beste Lösung für die Implementierung von single sign on in einer .net-Anwendung?Ich habe gegoogelt und fand einige Lösungen, aber ich bin nicht sehr überzeugt, mit diesen Lösungen.

Benutzer anmeldet website1 und bewegt sich dann auf website2 zur Verfügung.Website2 zur Verfügung, wie wissen Benutzer angemeldet hat?Ich denke, durch die übergabe einige token in der url wird überprüft werden durch website2 zur Verfügung in der Datenbank auf Gültigkeit.Das heißt, ich brauche marshall alle urls, die in die website1 braucht, um website2 zur Verfügung?

Zweitens, wenn der Benutzer weiterhin zu durchsuchen website2 zur Verfügung für etwa 1 Stunde, und dann bewegen Sie zu website1.Durch, dass Zeit, die website1-Sitzung hat das Zeitlimit überschritten, so dass Benutzer eine login-Seite, ist es nicht?Aber dieses Verhalten ist falsch, wie pro single-sign-on-Funktionalität.

War es hilfreich?

Lösung

Ich glaube, du Missverständnis, wie Single-Sign-on funktioniert.

Lets betrachten website1 und Website2 die Einzelanmeldung verwenden möchten.

Ein Login-Webseite an identityProvider erstellt. Dies ist der einzige Ort, an dem ein Anmeldebildschirm angezeigt wird.

Wenn der Benutzer besucht WebSite1 und wählen einzuloggen website1 den Benutzer auf dem Anmeldebildschirm an identityProvider sendet. Der Benutzer meldet sich auf identityProvider, die für seine Domäne ihre eigenen Login-Cookie fällt (und vielleicht erlaubt es dem Benutzer, um ihre Authentifizierungsinformationen zu speichern, damit sie nie wieder dazu aufgefordert werden). Er leitet dann den Browser zurück zu website1 einschließlich eines Token in der Anforderung, die Risse offen WebSite1 erhält Identitätsinformationen aus und führt sie eigene Login-Bits ist (fällt es eigene Authentifizierungscookie ist, die für die jedoch dauert es will).

Dann der Benutzer besucht Website2 und wählt Anmeldung. Website2 springt den Benutzer identityProvider, der bereits weiß, wer die Nutzer sind und, wenn sie Benutzer gewählt hat, ihre Login-Daten zu speichern, authentifiziert leise und leitet dann mit einem anderen Token Website2 zurück, die Risse Website2 offen und führt dann seine eigenen Login-Bits.

Es gibt eine Reihe von Sicherheit um ihn herum, Token auf bestimmte Websites zu beschränken, nur Token ermöglicht auf der weißen Liste Websites gesendet werden sollen usw. etc.

So Ihre Bedenken auszuräumen

  1. Benutzer anmeldet website1 und bewegt sich dann Website2. Wie Website2 wissen Benutzer angemeldet hat? Es funktioniert nicht. Website2 muss erste Authentifizierungsinformationen von der Einzelanmeldung Website anfordern.
  2. Das bedeutet, dass ich marshall müssen alle URLs in website1, die Website2 nimmt? Nein, es sei denn, Sie website1 der Identity-Provider machen auch. Selbst dann schmerzhaft, dass wäre, besser zu haben Website2 zum identityprovider umleiten zurück, wenn ein Token erforderlich ist.
  3. Zweitens, wenn der Benutzer weiterhin Website2 für etwa 1 Stunde durchsuchen und zu website1 zu bewegen. Bis zu diesem Zeitpunkt website1 Sitzung abgelaufen ist, so wird der Benutzer eine Login-Seite zu sehen, ist es nicht? - Es hängt davon ab, wie Sie website1 konfigurieren, und wie lange wird es Authentifizierungscookie dauert
  4. .
  5. Aber dieses Verhalten ist falsch, wie pro Single Sign-On-Funktionalität. Nein, ist es nicht. Einzelanmeldung bedeutet nicht, dass Sie eine Floating-Token erhalten, die zwischen den Standorten gemeinsam genutzt wird. Jede Website, die das Single Sign-On verwendet schafft noch ihre eigene Authentifizierungscookie. Was könnte passieren, ist, wenn der Benutzer zurück WebSite1 geht es um ein abgelaufenes Authentifizierungscookie erkennt, sendet dann den Benutzer wieder ab auf die Einzelanmeldung Seite, wo sie authentifiziert (leise) und ein neues Token zurück an website1 geschoben, die eine neue schafft Authentifizierungscookie für sich.

Andere Tipps

Der offizielle Microsoft-Ansatz ist über Active Directory Federation Services (die SAML mit AD-Authentifizierung Wraps). Dies hat die Eigenschaften, die Sie suchen -. Aber vielleicht auch im Schwergewicht für eine öffentliche Web-Anwendung

Ich gehe davon aus, dass Sie nicht möchten, die Windows-Authentifizierung mit Active Directory verwenden, usw. Eine Methode von einer authentifizierte Sitzung auf den anderen zu übergeben ist ein Sicherheitstoken auf die Query-String verwenden, wie Sie beschreiben.

Beide Anwendungen verwenden die gleichen öffentlichen Verschlüsselungsschlüssel, um das Sicherheitstoken zu kodieren / dekodieren. Wie Sie sagen, das funktioniert gut, wenn Sie nur über begrenzte, die Standorte vordefinierten Übergang Verbindungen zwischen, aber wenn Sie in der Lage sein wollen, zwischen den Anwendungen keine Seite Links zu verwenden, würden Sie diese URLs on the fly generieren müssen, so dass sie das Token enthalten.

Wie Sie mit Timeouts behandeln ist, dass die Sicherheits-Token auch eine Ablaufzeit enthält. Sie erzeugen ein neues Sicherheitstoken jede Seite Anfrage, oder wenn Sie eine neue Verbindung zwischen Anwendungen erstellen.

Normalerweise enthält das Sicherheitstoken eine Benutzer-ID und ein Timeout und die Login-Checker liefert entweder die Benutzer-ID oder null, wenn das Timeout abgelaufen ist.

Es ist keine schnelle Lösung richtig und sicher codieren auf. Vielleicht können Sie einen vorgefertigten eine auf Code Project finden?

Sie können verschiedene SSO-Mechanismus für verschiedene Anwendung basierend auf Ihre Bewerbung.

Allerdings konnte ich sehen "Out-of-box-SSO"service von Live, Google, Yahoo, Facebook, etc.Authentifizierung durch die Unterstützung von SAML.Dies wird uns helfen, um loszuwerden, die Probleme, die die Aufrechterhaltung unserer eigenen SSO-service-Implementierung.

Wenn Sie benötigen ein grundlegendes Verständnis, wie die SSO-Arbeit, die Sie verweisen können hier

MS hat ein Papier auf sie innerhalb des Unternehmens ein paar Jahre zurück - wir Set-up die Proben aber nie umgesetzt es für real - Single Sign-on

diesen Link Schauen Sie sich mit OAuth und Social-Anbieter, bietet es eine Vielzahl von Authentifizierungsfunktionen bereits gekocht in .Net Microsoft Video-Training auf OAuth und Single Sign-On mit sozialen Anbietern

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