Windows-Server-2008-R2
帶有 Windows 身份驗證的 Microsoft 應用程序請求路由
我在嘗試讓 Windows 身份驗證在使用 Microsoft 應用程序請求路由的環境中工作時遇到問題,並希望有人能提供幫助。
我遇到的問題是只有一些請求經過身份驗證,而其他請求則因 401 錯誤而失敗。我遵循了在http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for找到的 Web Farm 指令中執行 IIS 7.0 的特例-kerberos-authentication-with-iis-7-0.aspx無濟於事。
我目前的伺服器設置如下所示:
ARR
- 在 Windows 2008 R2 上使用 IIS 7.5 設置了 IIS 共享配置的兩台伺服器
- 為預設網站啟用匿名身份驗證
網路農場
- 在 Windows 2008 R2 上執行 IIS 7.5 的兩台伺服器
- 三個網站使用埠綁定來區分虛擬主機。使用的埠是 8000、8001 和 8002
- Windows 身份驗證的應用程序池都使用公共域帳戶
- SPN 添加到域帳戶
http/<virthalhost-name>:<port-number>
和http/<virtualhost-name>.<fully-qualified-domain>:<port-number>
當身份驗證工作/失敗時,IIS 日誌顯示以下內容。如果我理解正確,所有請求都應顯示 DOMAIN\User_Name:
2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/stylesheets/techweb.landing.css - 8002 DOMAIN\User_Name ARR-HOST-1-IP-ADDRESS 200 0 0 62 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/user-background-right.gif - 8002 - ARR-HOST-1-IP-ADDRESS 401 2 5 0 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/user-background-left.gif - 8002 DOMAIN\User_Name ARR-HOST-IP-ADDRESS 200 0 0 31 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/user-icon.png - 8002 - ARR-HOST-1-IP-ADDRESS 401 2 5 0 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/user-icon.png - 8002 - ARR-HOST-1-IP-ADDRESS 401 1 2148074248 0 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/application-icon.png - 8002 - ARR-HOST-1-IP-ADDRESS 401 1 2148074248 0 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/user-background-right.gif - 8002 - ARR-HOST-1-IP-ADDRESS 401 1 3221225581 15 2012-11-19 15:03:17 CLUSTER-IP-ADDRESS GET /home/images/building.gif - 8002 DOMAIN\User_Name ARR-HOST-2-IP-ADDRESS 200 0 0 218
有誰知道可能導致此問題的原因以及我該如何解決?
編輯
每當我執行網路擷取時,我都會看到 Negotiate 標頭被發送到伺服器。
第一個請求
/home
:要求
沒有
回复
Proxy-Support: Session-Based-Authentication WWW-Authenticate: NTLM WWW-Authenticate: Negotiate
第二個要求
/home
:要求
Authorization: Negotiate YIGeBgYrBgEFBQKggZMwgZCgGjAYBgorBgEEAY....
回复
Proxy-Support: Session-Based-Authentication WWW-Authenticate: Negotiate oRUwE6ADCgEDoQwGCisGAQ....
第三個(也是最後一個)請求
/home
:要求
Authorization: Negotiate oTMwMaADCgEBoioEKE5UTE1TU1AAAQAAAJe....
回复
Proxy-Support: Session-Based-Authentication WWW-Authenticate: NTLM WWW-Authenticate: Negotiate
在第三個請求之後,我從 IIS 獲得了 401 頁面。
獲取失敗請求的網路數據包擷取,並檢查 Http 請求標頭中的 kerberos 身份驗證令牌。如果您期待 kerberos 令牌但它不存在,則問題可能不在於您的伺服器。
我假設您因為 SPN 清單而期待 kerberos。
有關詳細資訊,請參閱以下內容: