2011-12-27 25 views
6

Trong ứng dụng mạng nội bộ ASP.NET MVC 3 này (được tạo bằng cách sử dụng MVC 3 Intranet Application mẫu), nơi người dùng được xác thực tự động chống lại AD, tôi đang cố gắng hạn chế quyền truy cập vào bộ điều khiển cho người dùng trong nhóm Administrators cục bộ. Để đạt được điều này, tôi đã cố gắng để áp dụng AuthorizeAttribute như vậy:Làm cách nào để làm cho AuthorizeAttribute hoạt động với nhóm Quản trị viên cục bộ trong ứng dụng mạng nội bộ ASP.NET MVC 3?

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

Tuy nhiên, mặc dù người dùng AD của tôi (các ứng dụng báo cáo người dùng mong đợi đã được chứng thực) là trong Administrators nhóm địa phương, tôi có thể không truy cập vào bộ điều khiển khi áp dụng AuthorizeAttribute. Chỉ một trang trống xuất hiện. Tôi đang làm gì sai?

Mặt khác, tôi đã xác minh rằng việc xác định người dùng cụ thể của tôi làm việc:

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

Trong trường hợp này, tôi có thể lấy trang bị giới hạn thành công.

EDIT: tôi thấy rằng đủ điều kiện nhóm với BUILTIN làm việc:

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

Đây có phải là cách dứt khoát đề cập đến nhóm địa phương qua AuthorizeAttribute dù ??

Trả lời

6

Thực hiện theo hướng dẫn của tôi How to Create an Intranet Site Using ASP.NET MVC Bạn cần phải sử dụng được xây dựng trong AspNetWindowsTokenRoleProvider lớp, trong đó sử dụng các nhóm Windows như vai trò

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

Sẽ chỉ có tác dụng nếu bạn là một quản trị viên trên máy chủ IIS. Nếu bạn triển khai ứng dụng của mình đến một máy chủ sản xuất cho công ty của mình, bạn sẽ cần phải được tạo một quản trị viên cục bộ trên máy chủ sản xuất.

+0

Cảm ơn, điều này tương ứng với những gì tôi tìm thấy (phải đủ điều kiện 'Quản trị viên 'với" BUILTIN "). – aknuds1

0

Bạn có thể thuộc tính ủy quyền AD tùy chỉnh để đặt phía trên mỗi hành động hoặc bộ điều khiển. Tôi đã làm điều này trước đây và đã làm một cái gì đó rất giống với liên kết dưới đây. Điều này hoạt động nếu bạn đang sử dụng xác thực biểu mẫu chứ không phải cửa sổ.

Active Directory Authorization based on Groups

+0

Nhóm quản trị viên là địa phương mặc dù, là vấn đề giống như cho các nhóm quảng cáo? – aknuds1

+0

Nhìn vào câu trả lời mới hơn cho câu hỏi mà bạn đề cập đến, nó nói rằng bạn có thể thoát khỏi với một 'System.Web.Security.WindowsTokenRoleProvider' trong web.config, về cơ bản. Điều này đã được thêm vào web.config của tôi, tôi giả định bởi mẫu ứng dụng Intranet, vì vậy tôi nghĩ rằng việc xác thực đối với AD sẽ hoạt động. Trường hợp tại điểm, tôi đã có thể ủy quyền cho người dùng cụ thể của mình: '[Ủy quyền (Người dùng = @" quảng cáo \ arve ")]'. – aknuds1

+1

Điều đó không đúng. Xem bài viết của tôi trên MSDN Cách tạo trang web mạng nội bộ bằng cách sử dụng ASP.NET MVC http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx Bạn cần sử dụng lớp AspNetWindowsTokenRoleProvider – RickAndMSFT

Các vấn đề liên quan