最近執行專案遇到了無法正常SSO(Single Sign on)登入站台,即使IIS設定好了Windows驗證,Client的IE瀏覽器也有將Windows整合驗證打勾,也加入了信任的網站怎麼會無法進行SSO呢!?
這個問題困擾了好幾天,終於今天在同事的協助下找到問題
首先先釐清狀況的問題點
1. Web Server確認Windows驗證有開啟,LDAP驗證也能正常通過。
2. Client有用網域帳號登入,IE雖會彈跳Windows驗證視窗,但key入AD帳號密碼LDAP驗證可以成功。
3. Windows XP、Vista、7可以使用NetBIOS SSO正常登入,ServerIP及FQDN無法SSO會彈跳Windows驗證視窗。
4. Windows Server 2003、2008使用NetBIOS、IP、FQDN都無法SSO,會彈跳Windows驗證視窗。
5. 使用Fiddler2確認傳送的是NTLM而非Kerberos。
由以上總結得知Web Server驗證是可以正常的,且SSO應是沒問題
也使用了Fiddler2監控了IE與Web之間的溝通行為,發現SSO正常的狀況下Client都會丟Domain\user給IIS進行驗證
而SSO驗證失敗則傳送空值給IIS,所以理所當然驗證錯誤後會彈跳Windows驗證視窗
經過幾天的燒腦袋後終於在Client的IE 將站台網址加入近端內部網路後正常SSO驗證成功了。
這項設定是基於IE預設安全性區域的設定,若有使用SSO還是需要加入近端內部網路
所以最後設定IE安全性的問題還是交由AD來進行派發GPO
SSO觀念釐清
Client須JoinDomain,並使用DomainUser登入OS,再由瀏覽器將帳號及密碼傳遞至IIS,IIS再將帳號密碼丟給AD做驗證,驗證成功使用者將會自動SSO登入Web。
IE瀏覽器在進行Windows驗證的時候會由Negotiate去判別使用的是NTLM or Kerberos,這個地方可以從Fiddler2看出來。
參考資料(重點整理)
MSDN – Internet Explorer 提示彈跳Windows驗證
http://support.microsoft.com/kb/258063/zh-tw
MSDN – IE上的安全性區域定義
http://support.microsoft.com/kb/174360
在AD Server派發GPO讓網域成員加入定義的網站於近端內部網路
http://blog.miniasp.com/post/2014/01/10/configure-Internet-Explorer-security-zone-sites-using-group-polices.aspx