Ich habe an einer ASP.NET MVC 4-Anwendung gearbeitet, die eine formularbasierte Authentifizierung verwendet. Benutzer werden anhand einer Anbieterauswahl im Anmeldeformular gegen einen Mitgliedschaftsanbieter validiert. Derzeit gibt es beispielsweise zwei Anbieter: Active Directory und einen benutzerdefinierten Anbieter, der einen externen Webdienst aufruft. Wenn der Benutzer gültig ist, aktualisieren wir Informationen in unserer lokalen Benutzertabelle, z. B. das Datum der letzten Anmeldung usw. Wenn der Benutzer gültig ist und nicht in der lokalen Benutzertabelle vorhanden ist, fügen wir sie hinzu. Sobald dies alles erledigt ist, setzen wir ein Cookie und fahren mit dem Hauptinhalt fort. Alle Controller überprüfen User.Identity.IsAuthenticated und kehren zur Anmeldeseite zurück, wenn der Test fehlschlägt.
Jetzt wird mir gesagt, dass diese Anwendung von einer einzelnen Webanwendung zu einer Lösung mit mehreren Anwendungen wechselt. Jede Anwendung sollte unabhängig von den anderen vorhanden sein, dasselbe Erscheinungsbild haben und dieselbe Anmeldefunktion verwenden. Für jede Anwendung muss möglicherweise ein neuer Mitgliedschaftsanbieter hinzugefügt werden. Wir werden auch Daten hinzufügen, um den Zugriff auf die Anwendungen zu beschränken. Ein Benutzer hat möglicherweise nur Zugriff auf eine der Anwendungen, während ein anderer Benutzer Zugriff auf alle Anwendungen hat.
Das Einrichten des Datenspeichers ist kein Problem. Das Teilen des Layouts von einer Anwendung, die in den anderen verwendet werden soll, ist ebenfalls kein Problem. Ich habe Probleme damit, zu entscheiden, wie die Anmeldefunktion so „umgestaltet“ werden soll, dass das Hinzufügen eines neuen Mitgliedschaftsanbieters und einer neuen Anwendung „später“ nicht dazu führt, dass wir vorhandene Anwendungen erneut veröffentlichen müssen. Im Moment möchten sie auch keine Startseite für die einmalige Anmeldung für die Anwendungen. Sie möchten, dass die Benutzer direkt zu einer Anwendung gehen, sich anmelden und das tun, wofür sie dorthin gekommen sind. Daher kann ich zu http://site1.mysites.com gehen, mich anmelden und meine Arbeit erledigen, während der Typ neben mir zu http://site2.mysites.com geht , sich anmeldet und seine Arbeit erledigt.
Ich habe Probleme, meinen Kopf um den besten Weg zu wickeln, dies zu tun. Mein erster Gedanke war ein WCF-Webdienst für die Anmeldung. Ich hätte eine Controller-Aktion, die den Webservice aufruft und die Anmeldeinformationen übergibt. Wenn die Anmeldung erfolgreich war, konnte ich eine Liste der Anwendungen für den Benutzer aus dem lokalen Speicher abrufen. Wenn Sie weitere Anwendungen hinzufügen, müssen wir vorhandene Apps nicht erneut veröffentlichen, da der Webdienst für diese Apps nicht geändert wurde.
Ich höre auch immer wieder von diesem ASP.NET-Web-API-Zeug. Soll ich stattdessen diesen Weg gehen? Möglicherweise möchte ich eine Site zum Verwalten der lokalen Benutzerdatenbank erstellen, sodass eine Site, auf der die Web-API gehostet wird, eine Option sein kann.
Ist das Web-API-Zeug für diese Situation falsch? Wenn nicht, hat es Vorteile gegenüber dem WCF-Webdienst? Gibt es alternative Methoden, um mein Endergebnis zu erzielen?