Wir haben eine ASP.NET/MVC-Website, die FormsAuthentication verwendet. Wenn der Benutzer versucht, auf eine Seite zuzugreifen, und kein gültiges FormsAuthentication-Cookie besitzt, leitet IIS ihn normalerweise zur Anmeldeansicht um. Wenn der Benutzer einen HttpPost für den Login-Controller ausführt, ruft unsere Controller-Aktion unseren WebApi-Webservice auf, der den Benutzernamen, das Passwort und die customerid für eine Sql-Server-Datenbank validiert. Wenn die Authentifizierung erfolgreich ist, legt die Controlleraktion ein FormsAuthentication-Cookie fest und leitet zu der Seite um, nach der der Benutzer gefragt hat.Kann sich eine Website bei mehreren ADFS-Servern authentifizieren?
Jetzt macht der Verkauf Geräusche über "Single Sign-On", obwohl ich nicht genau weiß, was sie damit meinen. Von dem, was ich gelesen habe, bedeutet dies in der Microsoft World in der Regel MS Active Directory Federation Services zugreifen.
An dieser Stelle habe ich fast keine Ahnung, wie das funktionieren würde, aber bevor ich zu tief hineingrabe, wäre es möglich, den Authentifizierungscode innerhalb des WebApi Webservice zu setzen, wo wir gegen den Sql Server validieren könnten Datenbank oder gegen den ADFS-Server, der für den angegebenen Kunden geeignet ist?
Unser Problem ist, dass wir nicht wissen, wie viele Tausende von Benutzern für einige Hunderte von Kunden arbeiten. Bei vielen Kunden wird ADFS nicht ausgeführt, und diejenigen, die dies tun, haben jeweils einen eigenen ADFS-Server.
Das meiste von dem, was ich in Bezug auf Single Sign-On sehe, scheint die Browserumleitung zum ADFS-Server zu involvieren, dann die Umleitung zurück, und es sieht so aus, als würde man sich überhaupt nicht einloggen, wenn man schon eingeloggt ist Ich denke, das können wir in unserem Fall. Wir können nicht wissen, auf welchen ADFS-Server umgeleitet wird, bis wir die Datenbank gefunden haben.
Also die Frage - ist es möglich, ADFS-Authentifizierung vollständig aus C# -Code in unserem WebAPI-Webdienst zu tun?
(Eine mögliche Komplikation - die Website selbst hat keinen Zugriff auf eine Datenbank. Die einzige Konfigurationseinstellung in der web.config ist die Basis-URL des Webservice. Die Authentifizierung muss im Webservice erfolgen, nicht auf der Website .)
Immer wenn im Zweifel, wie und was SSO ist, denken Sie an einem Google-Ökosystem. Sie greifen auf eine ihrer Apps zu, Sie werden auf eine Anmeldeseite einer noch anderen App weitergeleitet und dann mit den authentifizierten Benutzerinformationen zurückgeleitet. Diese Trennung ermöglicht es dem Identity-Provider, neue Features (wie zwei-Faktor-Authentifizierung) einzuführen, ohne alle Apps zu belästigen, die den Identity-Provider verwenden. Und nicht wahr, SSO in Microsoft World ist nicht an ADFS gebunden. Es ist nur eine der Optionen. –