Ich habe ein kleines Projekt mit Visual Studio 2013, .NET 4.5, MVC 5 und EF 6. Ich habe es mit Windows-Authentifizierung erstellt, aber jetzt muss ich auf die Mitgliedschaft in einem Active überprüfen Verzeichnisgruppe zum Zulassen oder Verweigern des Zugriffs.Windows-Authentifizierung mit Active Directory-Gruppen
Ich bin viele sehr tiefe Kaninchenlöcher hinuntergegangen und habe versucht, herauszufinden, wie man das macht. Zuerst nahm ich an, dass ich das Projekt ändern müsste, um "On-Premises" -Authentifizierung zu verwenden. Ich habe jedoch gefunden:
Also, vorausgesetzt, dass # 3 wahr ist, habe ich versucht, diese zahlreiche Beiträge über das Lesen, aber sie scheinen in zwei Gruppen zu fallen:
- Geradlinige, einfache Methoden, die ich nicht bekommen kann zu arbeiten, wahrscheinlich, weil es etwas Wissen voraussetzt, das ich nicht habe.
- Komplexe, benutzerdefinierte codierte Methoden, von denen ich vermute, dass sie durch Code geschehen, was wahrscheinlich in einer code-freien Methode getan werden kann.
Angenommen, # 1 ist der Weg zu gehen, hier ist mein jüngster Versuch.
In meinem Controller, ich habe:
[Authorize([email protected]"SomeDomain\\SomeGroup")]
public class SomeController : Controller
In meiner Datei Web.config, die ich habe:
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear/>
<add name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider"
applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="BehaviorConfiguration">
<serviceAuthorization
principalPermissionMode="UseAspNetRoles"
roleProviderName="AspNetWindowsTokenRoleProvider" />
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Wenn ich versuche, auf die Seite zuzugreifen, ich stattdessen anmelden gefragt werden. Nachdem ich meine Login-ID und das Passwort eingegeben habe, erhalte ich weiterhin die Anmeldeaufforderung. Ich darf nicht auf die Seite gehen.
Ich habe nirgends meine Anwendung über den Active Directory-Server informiert, aber ich habe den Eindruck, dass Windows das bereits weiß (seit ich mich bei Windows anmelde, greift es auf den Active Directory-Server zu, um mich zu authentifizieren)).
Fehle ich etwas? Oder liege ich falsch darin, anzunehmen, dass dies ohne das Schreiben von benutzerdefiniertem Code möglich ist?
Vorbehalt: Ich bin ziemlich neu zu .NET, MVC, etc, aus der Java-Welt kommen, also bitte verwenden Sie kleine Worte. :-)
Sie sollten diese Frage überprüfen. Es ist wahrscheinlich für eine frühere Version von mvc, aber die Windows-Authentifizierung hat sich seit einiger Zeit nicht geändert. http://stackoverflow.com/questions/13767439/using-windows-authentication-with-active-directory-groups-as-roles – Shoe
Ich hatte diesen Beitrag früher angeschaut, und basierte viel von dem, was ich versuchte, aber es hat nicht funktioniert. Ich habe gerade herausgefunden, was ich falsch gemacht habe. Im Attribut in meinem Controller hatte ich zwei umgekehrte Schrägstriche zwischen dem Namen der Domäne und dem Namen der Rolle statt einer. Also ich hatte: '[autorisieren (Roles = @ "somedomain \\ Einegruppe")]' statt '[autorisieren (Roles = @ "somedomain \ Einegruppe")]' Doh! –