9

Câu hỏi rất đơn giản thực sự:Thành viên ASP.NET - RoleProvider nào để sử dụng để User.IsInRole() kiểm tra ActiveDirectory Groups?

Tôi hiện đang vô hiệu hóa quyền truy cập vô danh IIS, người dùng sẽ tự động đăng nhập bằng thông tin đăng nhập Windows của họ. Tuy nhiên gọi User.IsInRole ("Role name") trả về false. Tôi đã kiểm tra lại User.Identity.Name() và "Role name" và nó sẽ trả về true.

Tôi hiện có này trong Web.Config của tôi:

CẬP NHẬT
Tôi đã gọi User.IsInRole ("tên Vai trò") nơi tôi nên gọi User.IsInRole ("DOMAIN \ tên Role ")

Tuy nhiên tôi vẫn muốn biết liệu tất cả các thành viên < có cần > không?

Tôi nên thay đổi điều gì? (và là thành viên < > entry cần thiết ở tất cả?)

<authentication mode="Windows"> 
     <forms 
     name=".ADAuthCookie" 
     timeout="10" /> 
    </authentication> 


<membership defaultProvider="ADMembershipProvider"> 
    <providers> 
    <clear/> 
     <add 
     name="ADMembershipProvider" 
     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="ADConnectionString" 
     connectionUsername="XXX\specialAdUser" 
     connectionPassword="xx" 
     /> 
    </providers> 
</membership> 

<roleManager enabled="true" defaultProvider="WindowsProvider"> 
    <providers> 
    <clear /> 
     <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

Trả lời

4

Nếu bạn sử dụng xác thực Windows IsInRole sẽ hoạt động mà không có cấu hình bổ sung, miễn là bạn nhớ tiền tố vai trò với tên miền, tức là DOMAIN \ groupName. Ngoài ra, bạn có thể đóng vai trò (chơi chữ) và sử dụng Windows auth, ví dụ: Nhà cung cấp vai trò SQL, nơi bạn không muốn AD của bạn được phân phối với vai trò tùy chỉnh cho ứng dụng của bạn.

Vì vậy, không, bạn không cần cấu hình của nhà cung cấp.

1

Các nhà cung cấp thành viên ở đây sẽ không giúp đỡ. ActiveDirectoryMembershipProvider có vẻ tốt nhất (chỉ?) Phù hợp với Xác thực biểu mẫu.

0

Đẹp, chắc chắn điều duy nhất bạn cần trong đó là nhóm roleManager (cùng với chế độ xác thực cơ sở = 'cửa sổ' thiết lập)

+0

Không phải vai trò được tự động kiểm tra trong Activedirectory chưa? – Ropstah

0

Ra khỏi hộp, không có nhà cung cấp vai trò sử dụng Active Directory trực tiếp. Bạn có thể sử dụng bảng vai trò trong thành viên ASP.NET và vai trò-hệ thống, hoặc bạn có thể sử dụng Authorization Manager (AzMan).

Có một bài viết trên CodeProject cho thấy việc triển khai nhà cung cấp vai trò hoạt động đối với Active Directory - với mã nguồn đầy đủ. Có lẽ điều này sẽ giúp?

Marc