無法為 Reporting Services 配置 Kerberos
語境
我正在嘗試在域中配置 Kerberos 以進行雙跳身份驗證。所以這裡是機器和它們各自的角色:
client01
: Windows 7 作為客戶端dc01
: Windows Server 2008 R2 作為域控制器和 dnsserver01
:Windows Server 2008 R2 作為報告伺服器(本機模式)server02
: Windows Server 2008 R2 作為 SQL Server 數據庫引擎我希望我
client01
連接到server01
並配置位於server02
使用集成安全性的數據源。因此,由於 NTLM 無法將憑據推送到那麼遠,我需要設置 Kerberos 以啟用雙跳身份驗證。報告服務由網路服務服務帳戶執行,並且僅使用RSWindowsNegotiate
身份驗證選項進行配置。問題
client01
在. _server02
_server01
因此我得到錯誤:Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
因此,我繼續對
dc01
任何服務授予完全信任,server01
但它並沒有解決問題。我想注意到我沒有配置任何 SPN,server01
因為 Reporting Service 是由網路服務執行的,並且從我在 Internet 上閱讀的內容來看,當 Reporting Services 與網路服務一起使用時,SPN 會自動註冊。我的問題是,即使我想手動配置 SPN,我也不知道必須在哪裡設置它們。開dc01
還是開server01
?所以我在這個問題上走得更遠,並試圖追踪這個問題。根據我對 Kerberos 的理解,當我嘗試連接數據源時,這就是網路上應該發生的情況:
client01 ---- AS_REQ ---> dc01 <--- AS_REP ---- client01 ---- TGS_REQ ---> dc01 <--- TGS_REP ---- client01 ---- AP_REQ ---> server01 <--- AP_REP ---- server01 ---- TGS_REQ ---> dc01 <--- TGS_REP ---- server01 ---- AP_REQ ---> server02 <--- AP_REP ----
因此,使用 Wireshark 擷取了我的本地網路,但是每當我嘗試從
client01
on配置我的數據源server01
以將我的憑據傳遞給 時server02
,我的客戶端從不發送AS_REQ
orTGS_REQ
到 KDC ondc01
。問題
那麼有誰可以告訴我是否應該配置 SPN 以及必須在哪台機器上配置它?
另外,為什麼
client01
從不向我的 KDC 請求 TGT 或 TGS。你認為DC角色有什麼問題dc01
嗎?
應在代表服務標識的電腦或使用者對像上配置 SPN。如果 server01 上的相關服務在網路服務下執行,那麼您將確保在代表 server01 的電腦帳戶上配置了正確的 SPN。您可以通過執行
"setspn -l server01
“來檢查它。命令本身可以從任何地方執行,因為它會與 DC 通信並檢查對象的 serviceprincipalname LDAP 屬性。因此,您可以從 dc01 或 server01 或其他任何地方執行它,只要您有setspn.exe 二進製文件。您可以通過執行查看所有語法"setspn /?"
如果它們未配置(如上述命令驗證),您將使用相同的二進製文件但使用不同的語法添加它們。“-A”開關的範例語法通過執行“添加值”
setspn -A http/server01 server01".
該範例假定服務正在執行的埠是 80 或 443。您必須小心確保 SPN 未在 AD 林中的其他任何地方註冊,因為 SPN 必須是唯一的。當您執行類似
"setspn -F -Q http/server01"
.在 Wireshark 或任何其他網路跟踪工具中,您只會看到 kerberos 流量,前提是客戶端還沒有資源的記憶體票證,並且沒有指示 SPN 不可用的負記憶體。如果您嘗試了幾次然後啟動 Wireshark 以查看發生了什麼,如果 SPN 完全失去,則可能涉及負記憶體。否則,如果您已經記憶體了一張票,這將被重複使用,並且不會再請求更多票。
在進行網路跟踪以進行故障排除之前,請始終在客戶端“
ipconfig /flushdns
”和 kerberos 記憶體“ ”上刷新 dns 記憶體。klist purge
這將顯示 KDC 位置的名稱解析流量,並在未本地記憶體時嘗試獲取票證。http://msdn.microsoft.com/en-us/library/cc281253.aspx看起來像是 SSRS 方面的一個很好的資源。有關 kerberos 在故障排除方面的幫助,請參閱以http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx開頭的針對 kerberos 的 askds 部落格文章。然後像你一樣查看http://blogs.technet.com/b/askds/archive/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1.aspx和其他文章覺得合適。
DC01 將發出票證,前提是 KDC 服務正在執行,並且它可以找到在其數據庫中註冊的相關 SPn,並且前提是它在林中的其他地方沒有重複。該值必須是唯一的。
setspn -x -f
可以查看" " 以檢查感興趣的值是否在森林中重複。