
整合 Windows 身份驗證概述
整合 Windows 驗證 (IWA) 是一種機制,當 IIS 和使用者都登入相同網域時,它會自動向 IIS 提供使用者驗證資訊。使用 ASP.NET 的 C# 建立網站時,您可以確定使用者是否已通過驗證,並擷取有關已通過身分驗證使用者的資訊。
這樣,使用者無需額外的登入步驟即可存取託管在 IIS 上(或與 IIS 整合)的 Web 應用程序,並可與其他應用程式伺服器實現 SSO 整合。
*如果使用者未加入相同網域或未通過驗證,則 IIS 頁面將顯示登入撥號,如果驗證未正確執行,則會發生 HTTP 錯誤 401.1 – 未授權。

單一登入 (SSO) 流程
Chat&Messenger 本地部署的 Ultimate 方案透過整合的 Windows 驗證支援單一登入 (SSO)。 SSO 流程如下:
- 用戶端首先存取整合的 Windows 驗證頁面 /cam-iissso。
- /cam-iissso 頁面使用 ASP.NET 來確定使用者是否已通過身份驗證,然後連接到 CAMServer。
- CAMServer 執行 LDAP 搜尋以驗證使用者是否為合法的 AD 用戶,產生用於存取 CAMServer 的 URL 以及 ssoToken(30 位元組或更長的唯一隨機值),然後請求重定向。
- 造訪 CAMServer 並使用 ssoToken 進行身份驗證。身份驗證成功後,系統將指派一個用於 API 存取的會話 ID。

實施單一登入的要求
將 Windows Server 加入網域
請將執行 CAMServer/IIS 的 Windows 伺服器加入 Active Directory 網域。
若要檢查現有 Windows Server 加入哪些網域,請前往“伺服器管理員”,按一下左側功能表中的“本機伺服器”,按一下“電腦名稱”,然後參考網域欄位。
此外,IIS 應該與 CAMServer 位於同一台伺服器上,並在 80 連接埠上運作。如果在 CAMServer 前面放置一個負載平衡器,CAMServer 將在 8080 連接埠上運行,因此 IIS 也可以使用 443 連接埠。
IIS安裝
從伺服器角色安裝 IIS。安裝 IIS 時,請在角色服務選擇選項中選取以下選項。
- Windows 驗證
- ISAPI 篩選器
- ISAPI 擴充

安裝 ASP.NET Core Hosting Bundle。
ASP.NET Core 託管包 請安裝軟體。安裝完成後,重新啟動 IIS 並驗證 AspNetCoreModuleV2 是否存在於處理程序對應中。



新增應用程式(cam-iissso)
請將 cam-iissso 應用程式新增至您的預設網站。
- 別名:cam-iissso
- 物理路徑: \sys\cam-iissso-net8.0
此外,授予 IIS_IUSRS 群組對 cam-iissso-net8.0 資料夾的唯讀存取權限(讀取和執行、列出資料夾內容、讀取)。


啟用 Windows 驗證
右鍵單擊“Windows 驗證”,然後選擇“啟用”。

Internet 選項設定
將 IIS 提供的站點新增至內網區域。
選擇“Internet 選項”,按一下“安全性”選項卡,然後選擇“本機 Intranet”。按一下“網站”按鈕,選擇“進階”,然後新增網站 URL。
驗證自動登入功能。
點擊“自訂等級”,然後在“使用者驗證”→“登入”下,請確保已選擇“在內網路區域自動登入”。


LDAP 設定
如果您想使用 IIS 實現單一登錄,LDAP 設定(需要 LDAPUrl、LDAPBaseDN 和執行代理身份驗證的 AD 使用者。)

使用 FQDN(完全限定網域名稱)進行存取和 SPN 註冊。
使用主機名稱(NetBIOS 名稱)存取 IIS Windows 整合式驗證頁面不需要註冊,但使用 FQDN(完全限定域名,例如 sso.example.com)存取時需要 SPN 註冊。
服務主體名稱 (SPN) 是 Kerberos 驗證中用於唯一識別 Active Directory 上特定服務的名稱。當使用完全限定網域名稱 (FQDN) 存取服務時,註冊 SPN 可使用戶端正確要求其正在存取的服務的 Kerberos 票證。
例如 https://sso.example.com 存取服務時,用戶端(瀏覽器)會向 Active Directory 要求票證,聲明「我想連線到名為 HTTP/sso.example.com 的服務」。 Active Directory 會檢查 SPN 與哪個帳戶關聯,並發出對應的服務票證。如果 SPN 註冊不正確,Kerberos 驗證將會失敗,並顯示驗證對話方塊。
SPN 註冊是針對託管 IIS 的電腦帳戶執行的。例如:廣告 對於執行在主機名稱 [hostname] 下的 IIS,請如下註冊 SPN:
setspn -S HTTP/sso.example.com ad$
註冊後,您可以使用以下命令進行檢查:
setspn -L ad$
這一結果 HTTP/sso.example.com 如果顯示此訊息,則表示您的 SPN 註冊成功。
在HTTP代理連線環境下不可用。
請注意,HTTP代理連線環境下不支援SSO。
負載平衡器 + SSL 環境配置
如果您在負載平衡器 + SSL 環境中使用 IIS 整合 Windows 驗證,請參閱下列部落格文章。


