2013-12-20 13 views
13

Ich baue eine MVC4-Anwendung für den internen Gebrauch in einer Unternehmensumgebung. Ich benutze Windows-Authentifizierung, was gut funktioniert, aber ich habe Probleme mit Active Directory-Gruppen als Rollen für die Autorisierung.Autorisierung mit Active Directory-Rollenanbieter MVC4

sieht mein Web.config wie folgt aus:

<authentication mode="Windows" />   
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> 
    <providers> 
    <clear /> 
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
    </providers> 
</roleManager>   
<authorization> 
    <deny users="?" />  
</authorization> 

Wenn ich Benutzerberechtigung verwenden, es funktioniert:

[Authorize(Users = @"DOMAIN\User1, DOMAIN\User2")] 
public ActionResult Create() 
{ 
    return View(); 
} 

Aber wenn ich Rollen verwenden, ist es, dass es einfach nicht lassen Benutzer Gruppe, um auf diese Aktion zuzugreifen:

Ich habe auch versucht, die Gruppe ohne die Domäne, wie ich in anderen re lesen Ich glaube, ich vermisse etwas in der Web.config, aber ich bin mir nicht sicher, was ...

Ich vermied es, einen benutzerdefinierten Rollenanbieter zu verwenden, weil MVC4 erreichen soll dies ohne einen benutzerdefinierten Rollenanbieter (oder zumindest das ist, was ich dachte)

Kann mir jemand dabei helfen?

Vielen Dank im Voraus!

Antwort

16

Ich fand, das war das Problem. Nachdem ich einige Informationen über die machine.config here gelesen hatte, überprüfte ich, dass ich bereits die richtige Konfiguration hatte.

Fianlly habe ich es einfach so arbeiten:

[Authorize(Roles = "Domain\\Group")] 
public ActionResult Create() 
{ 
    return View(); 
} 

Das Problem war die Art, wie ich die Gruppen eingegeben haben.

Ich hoffe, dass dies anderen Menschen helfen kann.

+0

Ah, doppelter Backslash !! Ich arbeite seit Stunden daran - Cheers –

+1

@ D.Mac - Seine Standard-C# String Formatierung/Escaping: "Domain \\ Gruppe" oder @ "Domain \ Group". https://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx –

+3

Ja, das Spiel kann nicht der Grund oder der semantische Unterschied sein, da es nur eine syntaktische Angelegenheit ist – Mzn