Ich erstelle eine Intranet-Website, auf der sich Benutzer in der Unternehmensdomäne befinden und unterschiedliche Berechtigungsstufen haben. Ich verwende derzeit <authentication mode="Windows"/>
, um den Zugriff auf die Site zu kontrollieren, aber es scheint so, als ob ich ASP.NET Identität .
Beispiel: Meine Anwendung ist ein Dashboard für jede Abteilung in der Organisation. Ich möchte eine einzelne AD-Gruppe mit dem Namen DashboardUsers
erstellen und alle Personen, die die Site in dieser Gruppe erreichen können, dazu einladen.
Ich möchte auch die Ansichten im Dashboard einschränken. Zum Beispiel möchte ich nur, dass die IT-Gruppe ihre Ansicht sieht, und die Finanzleute sehen ihre, usw.
Frage - Sollte ich die Windows-Authentifizierung verwenden, um den Zugriff auf die Site zu steuern, und dann ASP.NET Identity für Benutzerberechtigungen verwenden?
Ich habe etwas ähnliches mit nur WindowsAuthentication getan. Sie können Ihre Aktionen mit dem Autorisierungsattribut kennzeichnen:
%Vor%Solange dieser Benutzer Mitglied der AD-Gruppe "DashboardUsers" ist, erhält er Zugriff auf diese Aktion. Es scheint wie MVC Magie, aber es ist wirklich so einfach.
Leider erlaubt Ihnen dieser Ansatz nicht, eine Aktion für verschiedene Rollen zu überladen, da das Autorisierungsattribut nicht Teil der Signatur der Methode ist. In Ihren Ansichten müssten Sie verschiedene Anker-Tags basierend auf der aktuellen Benutzerrolle anzeigen.
ie:
%Vor%oder
%Vor%NACH KOMMENTAR BEARBEITEN: Da Ihre Identität von AD kommt, könnten Sie Logik in Ihrem Controller wie:
verwenden %Vor%Und das wird prüfen, zu welcher AD Gruppe sie gehören. Ich weiß, dass es nicht sehr elegant ist, aber ich kann mir nicht vorstellen, Windows Auth mit einer benutzerdefinierten Identität zu mischen, und die Verwaltung von Berechtigungen in Ihrer eigenen db wäre auch elegant.
Ich bin auf dieses Dilemma schon einmal gestoßen und habe einen benutzerdefinierten Rollenanbieter erstellt, den ich in Verbindung mit der Windows-Authentifizierung verwendet habe. Ich bin mir nicht sicher, ob Sie die OWIN-Middleware bei der Authentifizierung gegen AD benötigen.
%Vor%Konfigurationsdatei
%Vor%Tags und Links asp.net-mvc c# asp.net asp.net-identity