Tôi có một vài trang web dành cho công việc sống bên ngoài mạng LAN của công ty - và do đó nằm ngoài phạm vi giao tiếp trực tiếp của Active Directory (A/D) - nhưng tôi muốn có thể xác thực người dùng chống lại các máy chủ A/D của công ty cũng như kho lưu trữ thứ cấp của người dùng/vai trò ***. Mã giả cho hoạt động này là:Làm cách nào để xác thực đối với Active Directory từ mã dịch vụ web ASP.NET?
- Người dùng nhập tên người dùng/mật khẩu vào biểu mẫu đăng nhập của trang web bên ngoài.
- Trang web bên ngoài gọi một dịch vụ web bên trong mạng LAN có thể nói chuyện với A/D.
- Kiểm tra webservice để xem liệu tên người dùng/mật khẩu có thể được xác thực ánh xạ tới người dùng trong A/D hay không. Nếu có, hãy trả về danh sách các vai trò A/D mà người dùng là thành viên.
- Nếu không thể tìm thấy/xác thực tên người dùng/mật khẩu đối với A/D, hãy kiểm tra cơ sở dữ liệu/dịch vụ là kho lưu trữ thứ cấp của thông tin người dùng/vai trò. Trả về tất cả các vai trò sử dụng nếu chúng xác thực dựa trên máy chủ auth thứ cấp.
- Trả lại danh sách các vai trò mà người dùng đang truy cập vào trang web gọi điện.
*** Ý tưởng là chúng tôi không muốn đặt hàng chục - có khả năng hàng trăm nhà thầu và chi nhánh vào Active Directory khi tất cả họ sẽ chỉ đăng nhập vào máy chủ web bên ngoài của chúng tôi. Do đó, lược đồ auth thứ cấp.
Máy chủ web "bên ngoài" nằm trong DMZ và không thể truy cập trực tiếp vào máy chủ A/D. Tuy nhiên, có một quy tắc tường lửa cho phép lưu lượng truy cập cổng 80/443 từ IPAddresses DMZ cụ thể của máy chủ web bên ngoài đến địa chỉ cổng/IP cụ thể của máy chủ ứng dụng nội bộ (asp.net). Trong tương lai, chúng tôi có thể đồng bộ hoàn toàn các máy chủ ngoại vi, nhưng cùng một ngoại lệ tường lửa bởi cổng và IP sẽ vẫn cho phép các máy chủ web bên ngoài gọi các cuộc gọi dịch vụ web trên máy chủ ứng dụng nội bộ. –