2016-04-01 12 views
1

Seit ein paar Tagen habe ich mit der Erforschung des Single-Sign-On-Mechanismus in ASP.NET zu kämpfen, aber ich kann immer noch keine Antwort auf ein Problem finden, das ich lösen muss. Ich habe mehrere Artikel über den Mechanismus gelesen (einschließlich https://www.simple-talk.com/dotnet/asp.net/introducing-single-sign-on-to-an-existing-asp.net-mvc-application/ und http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic), denke aber, dass ich entweder nicht vollständig verstehen kann, wie es funktioniert, oder ich suche nach einer falschen Sache.Single Sign On für nur einen Teil der Benutzer?

Wenn ich gut verstanden habe, ist Single Sign On ein Mechanismus, der es ermöglicht, einen Benutzer über alle verbundenen Webanwendungen mit einzelnen Anmeldeinformationen zu authentifizieren. Ich muss jedoch nur einigen Benutzern von Anwendung A erlauben, auf einige Funktionen in Anwendung B zuzugreifen, indem Sie auf einen Hyperlink klicken (da nur einige Benutzer in beiden Anwendungen ein Konto haben). Beide Anwendungen sollten über einen unabhängigen Anmeldemechanismus verfügen (da einige Benutzer nur auf eine der Anwendungen zugreifen dürfen), aber wenn der Benutzer die Anwendung A anmeldet und über ein Konto in Anwendung B verfügt, sollte er in beiden Apps signiert sein (nicht unbedingt) andersherum).

Und hier kommt die Frage: Ist Single-Sign-On mit zentraler Authentifizierung wirklich was ich hier brauche? Und wenn ja, wie könnte ich es nur für einige Benutzer verwenden? Ich wäre sehr dankbar, wenn mir jemand dies erklären oder eine Quelle zur Verfügung stellen könnte, wo ich weitere Informationen darüber finden kann.

+1

Nun, ich denke, Sie verwirren Authentifizierung mit _authorisation_. Ersteres bestimmt, wer jemand ist, während letzteres ist, was sie tun können. Sie können SSO auf der ganzen Bandbreite verwenden, aber bestimmte Benutzer können bestimmte Dinge auf bestimmten Websites ausführen oder sie ganz verweigern. Es bedeutet nicht, dass Sie eine Mischung aus SSO und Nicht-SSO haben sollten. – MickyD

+0

Danke für die Antwort. Eigentlich kenne ich den Unterschied, aber ich hatte immer noch ein Problem mit der Lösung. Aber dank dem, was du geschrieben hast, habe ich an eine Sache gedacht. Wenn ich richtig verstehe, entweder wenn der Benutzer ein Konto in beiden Apps hat oder nicht, kann ich ihn als authentifiziert behandeln (was das Speichern eines Authentifizierungs-Cookies bedeutet) und dann kann ich innerhalb der Anwendung überprüfen, ob er genug Berechtigungen hat und wenn nicht z. Abmelden und erneut zum Login-Bildschirm umleiten, oder? – PJDev

+0

Keine Probs. Ja, das klingt ziemlich gut. – MickyD

Antwort

1

Dies ist eine Zusammenfassung der Konversation mit dem OP aus Angst, dass es gelöscht wird.


OP:

Aber was ich tun muss, ist nur einige Benutzer aus der Anwendung A zu erlauben, einige Funktionen in Anwendung B zugreifen, indem Sie einen Hyperlink zu klicken (weil nur einige Benutzer-Account haben in beiden Anwendungen). Beide Anwendungen sollten über einen unabhängigen Anmeldemechanismus verfügen (da einige Benutzer nur auf eine der Anwendungen zugreifen dürfen), aber wenn der Benutzer die Anwendung A anmeldet und über ein Konto in Anwendung B verfügt, sollte er in beiden Apps signiert sein (nicht unbedingt) andersherum).

Denken Sie an Authentifizierung oder Autorisierung? Erstere bestimmt, wer jemand ist, während letzteres ist, was sie tun können. Sie können SSO auf der ganzen Linie verwenden, aber bestimmten Benutzern die Ausführung bestimmter Dinge auf bestimmten Websites verweigern oder sie ganz verweigern. Es bedeutet nicht, dass Sie eine Mischung aus SSO und Nicht-SSO

OP haben sollten:

Danke für die Antwort. Eigentlich kenne ich den Unterschied, aber ich hatte immer noch ein Problem mit der Lösung. Aber dank dem, was du geschrieben hast, habe ich an eine Sache gedacht. Wenn ich richtig verstehe, entweder wenn der Benutzer ein Konto in beiden Apps hat oder nicht, kann ich ihn als authentifiziert behandeln (was das Speichern eines Authentifizierungs-Cookies bedeutet) und dann kann ich innerhalb der Anwendung überprüfen, ob er genug Berechtigungen hat und wenn nicht z. Abmelden und erneut zum Login-Bildschirm umleiten, oder?

Keine probs. Ja, das klingt ziemlich gut.

OP:

ich nur noch eine Frage haben. Ich habe mich gefragt, ob es ein einfacheres Verfahren gibt, das den zentralisierten Identitätsserver nicht verwenden müsste, z. Eine wurde im Sequenzdiagramm unter 'Ein sehr einfaches domänenübergreifendes SSO-Implementierungsmodell' here vorgestellt.Was würdest du über diese Lösung gemäß dem, was ich in der Frage geschrieben habe, sagen?

Nun, ich denke, der Nettoeffekt ist in Ordnung, d.h. der Benutzer muss sich nur einmal anmelden; obwohl ich mir über die Ausführung nicht sicher bin. Das Problem dabei ist, dass eine einzelne Site jetzt davon abhängt, dass die anderen beiden während der Weiterleitungen zugänglich sind (im Gegensatz zu nur einer SSO-Provider-Site). Wenn man down ist, bricht es. Außerdem müssen sich nun alle 3 Seiten darum kümmern, eine "Login" -Seite bereitzustellen, nur für den Fall, dass der Nutzer diese Seite zuerst besucht (der Artikel geht immer von Domain1 aus). Es ist ein bisschen wie ein Ad-hoc-SSO in genau der gleichen Weise wie Sie Ad-hoc-Wi-Fi ohne zentrale Basisstation tun können.

OP:

Und hier kommt die Frage: ist Single-Sign-on mit zentraler Authentifizierung wirklich das, was ich hier brauchen? Und wenn ja, wie könnte ich es nur für einige Benutzer verwenden?

Ich denke, dass die Vorteile eines einzigen Mechanismus überwiegen, separate Login-Einrichtungen in zwei oder mehr Anwendungen zu erhalten. Ich sehe nicht, warum Sie SSO für bestimmte Benutzer nicht verweigern konnten. Die abhängige Site kann leicht ermitteln, ob sich der Benutzer mit einem standortspezifischen Konto oder einem SSO-Konto anmeldet. In beiden Fällen kann die Kontoanmeldung von einem Administrator genehmigt werden, wobei bestimmte Bewerber abgelehnt werden (insbesondere wenn es sich um ein Unternehmen handelt) oder indem lediglich Autorisierungsregeln auf der Website verwendet werden.

Auch Sie möglicherweise bewusst, nur weil eine Website SSO akzeptieren kann, bedeutet nicht, dass es ausschließlich SSO ist. Sogar groovy Seiten wie StackOverflow akzeptieren Logins von SO-local-accounts sowie von SSO-Providern wie sagen Google und Facebook.

+0

Nochmals vielen Dank für Ihre Antwort.Es war sehr hilfreich und ich verstand den Punkt der zentralisierten SSO. Natürlich haben Sie Recht, wenn Sie alle Authentifizierungsmechanismen an einem Ort haben, ist das ein großer Vorteil. Der einzige Grund, warum ich nach einer einfacheren Lösung suchte, ist, dass die Implementierung viel weniger Zeit und Aufwand erfordert, da wir bereits zwei Apps mit separaten Anmeldebildschirmen und unterschiedlicher Authentifizierungslogik haben. Wir berücksichtigen die Vor- und Nachteile beider Lösungen und wählen die Lösung, die für unsere Anforderungen am besten geeignet ist. :-) – PJDev

+0

@PJDev Ausgezeichnet. Wünsche dir gute Besserung. – MickyD

Verwandte Themen