Tôi đã đọc một số câu hỏi về chủ đề này, chẳng hạn như here, here, here và here; nhưng không ai cung cấp giải pháp làm việc trong trường hợp của tôi.sử dụng xác thực cửa sổ với các nhóm thư mục hoạt động làm vai trò
Những gì tôi muốn làm:
Thực hiện thẩm định Windows cho một ứng dụng web mà chỉ được sử dụng bởi các nhân viên của chúng ta. Bằng cách này, họ không cần phải đăng nhập vào ứng dụng, nhưng đã được xác thực bằng cách đăng nhập vào các cửa sổ.
Ngoài ra, tôi cần hạn chế các khu vực nhất định của ứng dụng, dựa trên Nhóm bảo mật thư mục hoạt động mà người dùng có thể được chỉ định.
Vì vậy, tôi muốn có thể để trang trí Bộ xử lý/Hành động với
[Authorize(Roles="SomeRole")]
Những gì tôi đã cố gắng:
Tôi có
<authentication mode="Windows" />
trong web.config của tôi. Và tôi đã thêm một số hoán vị của một <roleManager>
như được tìm thấy trong một số bài viết được liên kết ở trên. Hiện tại, tôi có người quản lý vai trò này
<roleManager defaultProvider="WindowsProvider"
enabled="true"
cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
như đã tìm thấy trong this bài đăng.
Vì vậy, nếu tôi trang trí bộ điều khiển với [Authorize]
, tôi có thể truy cập nó tốt.
Tuy nhiên:
tôi có thể nhìn thấy trong thiết lập người dùng của tôi trên mạng, rằng tôi là một phần của một nhóm bảo mật AD gọi là "CNTT". Nhưng nếu tôi trang trí cùng một bộ điều khiển với [Authorize(Roles="IT")]
tôi nhận được màn hình trống được phục vụ bởi máy chủ phát triển asp.net cho 401 không được ủy quyền. Điều này là không mong muốn. Tôi nghĩ rằng tôi có thể xem trang khi tôi đăng nhập vào các cửa sổ và là một phần của nhóm "CNTT".
Hầu hết mọi thứ tôi tìm thấy về chủ đề này làm cho nó âm thanh rất đơn giản để thực hiện những gì tôi đang cố gắng làm, nhưng tôi rõ ràng thiếu một cái gì đó ở đây.
Bạn đã thiết lập nhà cung cấp thành viên ASP.NET để sử dụng Active Directory chưa? Không chỉ là nhà cung cấp vai trò .... –
@marc_s Tôi có ASpNetActiveDirectoryMembershipProvider được đặt làm mặc định trong web.config. Tôi có thể đăng bài đó nếu bạn cảm thấy có thể có lỗi khi gây ra sự cố. –
Đây là một chuỗi cũ, nhưng với bảo mật AD, bạn có cần chỉ định miền không? [Authorize (Roles = @ "domainname \ SomeRole")] – steveareeno