簡體   English   中英

DefaultCredentials在哪里提取“UserName”作為Web請求的用戶名?

[英]Where does DefaultCredentials pull out “UserName” as a username for a web request?

有一個WinForms桌面應用程序試圖連接到SSRS服務。 報表服務器配置為接受Active Directory憑據登錄以及特定用戶的憑據以進行報告。 在下面的代碼部分中,我們使用WinForms ReportViewer

reportViewer.ServerReport.ReportServerUrl = new Uri(_dboardServices.ReportingServicesUrl);
reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = CredentialCache.DefaultCredentials;

這對我的開發人員的機器和大多數客戶來說都很好。 但是有些客戶遇到401: System.Net.WebException: The request failed with HTTP status 401: Unauthorized ,來自SoapHttpClient系統。 有趣的是,我可以在我的機器上重現這個問題。 通過Fiddler查看流量, NTLM身份驗證啟動,然后“UserName”(字面意思!)作為用戶名而不是我的真實用戶名發送。 顯然失敗了。

如果我使用正確的用戶名,密碼和域構建憑證reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new NetworkCredential(goodUserName, goodPassword, domain); )我的請求成功。 就像我導航到SSRS asmx鏈接並輸入我的憑據一樣。 但是CredentialCache.DefaultCredentials (它應該默認為我的AD憑據)從某個地方拉出這個“UserName”。 系統從哪里獲得? 到目前為止,我搜索了我們的源代碼和網絡,沒有運氣。

這可能是存儲憑據的問題。 通過在命令行運行control keymgr.dll查看已存儲的憑據。 看到這篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM