[英]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.