2011-12-27 7 views
6

W tej aplikacji intranetowej ASP.NET MVC 3 (utworzonej przy użyciu szablonu MVC 3 Intranet Application), w której użytkownicy są automatycznie uwierzytelniani przed AD, próbuję ograniczyć dostęp do kontrolera do użytkowników w lokalnej grupie Administrators. W celu osiągnięcia tego, próbowałem zastosować AuthorizeAttribute tak:Jak zrobić AuthorizeAttribute w pracy z grupą lokalnych administratorów w aplikacji intranetowej ASP.NET MVC 3?

[Authorize(Roles = "Administrators")] 
public class ElmahController : Controller 

Jednak, mimo że moja użytkownik AD (aplikacja zgłasza oczekiwaną użytkownik został uwierzytelniony) jest w miejscowym Administrators grupy, nie mogę uzyskać dostęp do sterownika po zastosowaniu AuthorizeAttribute. Pojawia się tylko pusta strona. Co ja robię źle?

Z drugiej strony, mam dowód, że określenie mojego konkretnego użytkownika działa:

[Authorize(Users = @"ad\arve")] 
public class ElmahController : Controller 

W tym przypadku, mogę odzyskać Ograniczona strona pomyślnie.

EDIT: Okazało się, że grupa kwalifikacyjna z BUILTIN pracował:

[Authorize(Roles = @"BUILTIN\Administrators")] 

Jest to najlepszy sposób odnoszenia się do grup lokalnych poprzez AuthorizeAttribute chociaż ??

Odpowiedz

6

Postępuj mój poradnik How to Create an Intranet Site Using ASP.NET MVC Trzeba użyć wbudowanego AspNetWindowsTokenRoleProvider klasę, która wykorzystuje grupy Windows, jak role

[Authorize(Roles = @"BUILTIN\Administrators")] 

będzie działać tylko wtedy, gdy jesteś adminem na serwerze IIS. Jeśli wdrożysz swoją aplikację na serwerze produkcyjnym dla swojej firmy, musisz zostać lokalnym administratorem na serwerze produkcyjnym.

+0

Dzięki, odpowiada to tym, co znalazłem (muszą kwalifikować "Administrators" z "BUILTIN"). – aknuds1

0

Możesz umieścić niestandardowy atrybut autoryzacji AD nad każdą akcją lub kontrolerem. Zrobiłem to wcześniej i zrobiłem coś bardzo podobnego do linku poniżej. Działa to, jeśli używasz uwierzytelniania formularzy, a nie okien.

Active Directory Authorization based on Groups

+0

Grupa Administratorzy jest jednak lokalna, czy problem jest taki sam jak w przypadku grup AD? – aknuds1

+0

Patrząc na nowszą odpowiedź na pytanie, do którego się odnosisz, mówi się, że możesz w zasadzie uzyskać "System.Web.Security.WindowsTokenRoleProvider" w web.config. To jest już dodane do mojego web.config, zakładam przez szablon aplikacji Intranet, więc myślę, że uwierzytelnianie przeciwko AD już działa. W takim przypadku mogłem autoryzować dla mojego konkretnego użytkownika: '[Authorize (Users = @" ad \ arve ")]'. – aknuds1

+1

To jest nieprawidłowe. Zobacz mój artykuł na temat MSDN Jak utworzyć witrynę intranetową przy użyciu ASP.NET MVC http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx Musisz użyć klasy AspNetWindowsTokenRoleProvider – RickAndMSFT

Powiązane problemy