5

Wir verwenden eine ASP.NET 3.5-Webanwendung mit Forms-Authentifizierung auf einem öffentlichen IIS 7.5-Server mit geschütztem Inhalt für Tausende von Benutzern. Wir haben auch einige Unteranwendungen mit ASP.NET MVC 2.So integrieren Sie AD-Authentifizierung + SSO mit vorhandenen authentifizierten Forms SaaS-Webanwendung

Benutzernamen und Passwörter sind in unserer Datenbank gespeichert und jeder Benutzer hat Rollen und Gruppen angeschlossen, mit Privilegien und Zugriffsrechte definiert.

Jetzt wurden wir gebeten, auch für einfache SSO-Anmeldung über Active Directory zu erleichtern, so dass Benutzer Benutzername und Passwörter nicht zweimal eingeben müssen, um sich anzumelden. Diese Benutzer stammen aus verschiedenen Netzwerken und Domänen.

Kein Benutzer "Sync" sollte von unseren Servern zu LDAP-Servern stattfinden. Wir sind nicht sicher, ob eine Kommunikation mit LDAP erforderlich ist, da alle Benutzer in unserem System erstellt und dort verwaltet werden. Die Formularauthentifizierung wird für die meisten unserer Benutzer verwendet.

Ab hier sind wir uns nicht sicher, welcher der beste Weg ist. Was wäre für unser Szenario die "best practice" Vorgehensweise?

+0

Alle Antworten auf Ihre Fragen sind hier http://msdn.microsoft.com/en-us/library/ff423674.aspx –

Antwort

5

Die einfache Antwort ist SAML. Es gilt als "Best Practice" und viele große SAAS-Anbieter unterstützen es.

SAML-Protokoll definiert den Single-Sign-On-Fluss zwischen mehreren Systemen. Es schafft Vertrauen zwischen Systemen mit Zertifikaten. Ihre Anwendung akzeptiert eine Assertion, die Attribute (Benutzer-ID, Name, E-Mail-Adresse usw.) von anderen Systemen enthält. Ihre App wird den Nutzer in Ihren Nutzerspeicher abbilden.

In der .NET-Welt gibt es mehrere Optionen. Sie können eine Bibliothek finden, die SAML implementiert (ComponentSpace hat eine) und sie in die ASP.NET-Authentifizierung einbinden. Sie können Ihre eigenen mit Windows Identify Framework (WIF) erstellen. Hier ist die Bootsladung von WIF-Videos http://www.cloudidentity.com/blog/2010/06/23/ALL-WILL-BE-REVEALED-7-HOURS-RECORDINGS-FROM-THE-WIF-WORKSHOPS/. Sie können versuchen, IdentityServer http://thinktecture.github.io/

Je nachdem, wie sicher Ihre App sein muss, können Sie für eine einfache Option der Weitergabe von Benutzer-ID aus vertrauenswürdigen Netzwerken mit einer vereinfachten Methode entscheiden. Ich habe Apps gesehen, bei denen die Benutzer-ID über den URL-Parameter oder das Formularfeld gesendet werden kann. Natürlich ist das furchtbar unsicher, und Sie nehmen mehr Risiko auf sich, weil das Vertrauen zwischen zwei Netzwerken nicht kryptographisch erzwungen wird. Sie können dies etwas abschwächen, indem Sie die Referrer-Zeichenfolge oder die IP-Adresse überprüfen (wenn Sie beispielsweise den IP-Bereich eines Unternehmensnetzwerks isolieren können). Sie sind jedoch immer noch für das Spoofing offen, da jeder Benutzer die Identität anderer annehmen kann, indem er die Benutzer-ID innerhalb der HTTP-Anforderung einfach ersetzt.

Es beantwortet Ihre Frage wahrscheinlich nicht vollständig, aber hoffentlich zeigt es Ihnen in die richtige Richtung.

1

ich empfehlen, sich in ADFS 2.0 es ist sehr leistungsfähig in Bezug auf die Ansprüche Mapping und arbeitet mit AD: http://msdn.microsoft.com/en-us/magazine/ee335705.aspx

Was würden Sie machen, ist ein Zeichen Ihrer App raubend Teil, der die endgültigen Ansprüche zurückgegeben würde empfangen und analysieren zu Ihrem Webserver nach der Authentifizierungsschleife.

+0

Soweit ich weiß, ADFS funktioniert nur mit AD, so würde es als IdP arbeiten, wenn wir Angenommen, alle Identitätsanbieter sind AD-basiert. Für andere LDAPs müssen Sie nach anderen Lösungen suchen. ADFS funktioniert nicht als vertrauende Partei, da die betreffende Anwendung SQL als Benutzerspeicher verwendet. WIF würde jedoch funktionieren. – Sergey

Verwandte Themen