Tổng quan về xác thực Windows tích hợp
Xác thực Windows tích hợp (IWA) là cơ chế tự động cung cấp thông tin xác thực người dùng cho IIS khi IIS và người dùng đăng nhập vào cùng một miền. Khi bạn tạo một trang web bằng ASP.NET C#, bạn có thể nhận được xác định xác thực người dùng và thông tin người dùng được xác thực.
Điều này cho phép người dùng truy cập các ứng dụng web được lưu trữ (hoặc liên kết) bởi IIS mà không cần thao tác đăng nhập bổ sung và cho phép tích hợp SSO với các máy chủ ứng dụng khác.
*Nếu bạn không tham gia vào cùng một miền hoặc nếu người dùng chưa được xác thực truy cập vào trang IIS, vòng quay đăng nhập sẽ được hiển thị và nếu bạn không xác thực chính xác, Lỗi HTTP 401.1 - Không được phép sẽ xảy ra.

Luồng SSO (Đăng nhập một lần)
Gói Ultimate của Chat&Messenger tại chỗ cho phép SSO với xác thực Windows tích hợp. Luồng SSO như sau.
- Trước tiên, khách hàng truy cập vào trang xác thực Windows tích hợp /cam-iissso
- Trang /cam-iissso sử dụng ASP.NET để xác định xem nó có được xác thực hay không và liên kết đến CAMServer.
- CAMServer thực hiện tìm kiếm LDAP để xác nhận rằng đó là người dùng AD thông thường, tạo ssoToken (giá trị ngẫu nhiên duy nhất từ 30 byte trở lên) và URL để truy cập CAMServer, đồng thời yêu cầu chuyển hướng.
- Truy cập CAMServer và xác thực bằng ssoToken. Nếu xác thực thành công, ID phiên để truy cập API sẽ được chỉ định.

Yêu cầu để đạt được SSO
Tham gia Windows Server vào Domain
Vui lòng kết nối Windows Server chạy CAMServer/IIS vào miền Active Directory.
Để kiểm tra tên miền mà Windows Server hiện tại đang tham gia, hãy vào "Trình quản lý máy chủ" → nhấp vào "Máy chủ cục bộ" trên menu bên trái → nhấp vào "Tên máy tính" và tham khảo cột Tên miền.
Ngoài ra, IIS phải nằm trên cùng một máy chủ với CAMServer và chạy trên cổng 80. Nếu bạn đặt LoadBalancer trước CAMServer, CAMServer sẽ chạy trên cổng 8080, do đó IIS cũng có thể sử dụng cổng 443.
Cài đặt IIS
Cài đặt IIS từ vai trò máy chủ.
Khi cài đặt IIS, hãy kiểm tra các mục sau trong tùy chọn lựa chọn Dịch vụ vai trò.
- Xác thực Windows
- Bộ lọc ISAPI
- Cài đặt tiện ích mở rộng ISAPI riêng biệt

Bộ lọc ISAPI: Hỗ trợ tải mô-đun mở rộng trong IIS. Bắt buộc phải tải AspNetCoreModuleV2.
Tiện ích mở rộng ISAPI: Thêm tiện ích mở rộng ISAPI vào IIS. Cần thiết cho hoạt động AspNetCoreModuleV2. Khởi động trình quản lý IIS (iisreset)
Cài đặt gói lưu trữ ASP.NET Core
Gói lưu trữ lõi ASP.NET Hãy cài đặt.
Sau khi cài đặt, hãy khởi động lại IIS và đảm bảo AspNetCoreModuleV2 có trong ánh xạ trình xử lý.



Thêm ứng dụng (cam-iissso)
Thêm ứng dụng cam-iissso vào Trang web mặc định.
- Bí danh: cam-iissso
- Đường dẫn vật lý: \sys\cam-iissso-net8.0
Ngoài ra, cấp quyền truy cập xem (đọc và thực thi, liệt kê nội dung thư mục, đọc) cho thư mục cam-iissso-net8.0 cho nhóm IIS_IUSRS.


Kích hoạt xác thực Windows
Nhấp chuột phải vào "Xác thực Windows" và chọn "Bật".

Đặt tùy chọn Internet
Thêm trang web do IIS cung cấp vào vùng mạng nội bộ
Chọn Tùy chọn Internet, nhấp vào tab Bảo mật, chọn Mạng nội bộ cục bộ Nhấp vào nút Trang web, chọn Cài đặt nâng cao và thêm URL trang web
Kiểm tra đăng nhập tự động
Nhấp vào "Cấp tùy chỉnh" và trong "Xác thực người dùng" → "Đăng nhập", đảm bảo "Đăng nhập tự động trong vùng mạng nội bộ" được chọn.


Cài đặt LDAP
Khi thực hiện đăng nhập một lần bằng IIS,Cài đặt LDAP(LDAPUrl, LDAPBaseDN, người dùng AD thực hiện xác thực proxy) là bắt buộc.

Truy cập thông qua FQDN (tên miền đủ điều kiện) và đăng ký SPN
Điều này không cần thiết nếu bạn truy cập trang Xác thực tích hợp Windows của IIS bằng tên máy chủ (tên NetBIOS), nhưng bạn phải đăng ký SPN nếu truy cập bằng FQDN (tên miền đủ điều kiện, ví dụ: sso.example.com).
SPN (Tên dịch vụ chính) là tên dùng để xác định duy nhất một dịch vụ cụ thể trên Active Directory trong xác thực Kerberos. Nếu bạn truy cập dịch vụ bằng FQDN, việc đăng ký SPN sẽ cho phép máy khách yêu cầu thành công phiếu Kerberos cho dịch vụ bạn đang truy cập.
Ví dụ https://sso.example.com
Khi truy cập, máy khách (trình duyệt) yêu cầu một phiếu từ Active Directory, nói rằng "Tôi muốn kết nối với dịch vụ có tên là HTTP/sso.example.com." Active Directory xác định SPN được liên kết với tài khoản nào và cấp phiếu dịch vụ tương ứng. Nếu SPN không được đăng ký đúng cách, xác thực Kerberos sẽ không thành công, dẫn đến hộp thoại xác thực được hiển thị.
Việc đăng ký SPN được thực hiện trên tài khoản máy tính lưu trữ IIS. Ví dụ,quảng cáo
Đối với IIS chạy với tên máy chủ, hãy đăng ký SPN như sau:
setspn -S HTTP/sso.example.com ad$
Sau khi đăng ký, bạn có thể kiểm tra bằng lệnh sau:
setspn -L ad$
Kết quả này HTTP/sso.example.com
Nếu hiển thị thì nghĩa là đã đăng ký SPN thành công.
Không khả dụng trong môi trường kết nối proxy HTTP
Xin lưu ý rằng SSO không thể được sử dụng trong môi trường kết nối proxy HTTP.
Cấu hình trong môi trường LoadBalancer + SSL
Nếu bạn đang sử dụng Xác thực Windows tích hợp IIS trong môi trường LoadBalancer + SSL, vui lòng tham khảo bài viết blog sau.
