簡體   English   中英

通過HTTP的NTLM:是否有C#客戶端實現?

[英]NTLM over HTTP: Any C# client implementation?

我需要以編程方式從SharePoint服務器下載文件。

當我使用Firefox下載文件時,它看起來像是一個請求,但是Httpfox顯示HTTPS對話實際上是4個請求:

REQ1: GET https://mycorp.raxsp.com/_windows/default.aspx?ReturnUrl=/personal/mycorp_user1/_vti_bin/cmis/rest?getRepositories
RESP1: 401 Unauthorized, WWW-Authenticate NTLM

REQ2: Authorization NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
RESP2: 401, WWW-Authenticate    NTLM TlRMTVNTUAACAAAACgAKADgAAAAFgokC+[...]

REQ3: Authorization NTLM TlRMTVNTUAADAAAAGAAYAIAAAAAYA[...]
RESP3: 302 Found, Set-Cookie FedAuth=77u/PD94bW[...], Location /personal/mycorp_user1/_vti_bin/cmis/rest?getRepositories

REQ4: GET /personal/mycorp_user1/_vti_bin/cmis/rest?getRepositories
RESP4: 200 OK, <download begins>

我嘗試使用帶有用戶名/密碼的簡單HttpWebRequest下載文件,但正如預期的那樣,我只收到錯誤401。我正在考慮實現全部4個請求,使用NTLM over HTTP身份驗證算法spec )來計算挑戰,但這聽起來非常容易出錯...

是否有通過HTTP身份驗證進行NTLM的客戶端庫或代碼段?
它用於開放源代碼項目 ,因此必須是開放源代碼,最好使用HttpWebRequest
不涉及Kerberos / SSO /域。

我們始終使用System.Net.WebClient使用此代碼從SharePoint下載文件。

public static byte [] downloadSharepointFile (string url){
      using (var client = new WebClient { Credentials = new NetworkCredential("username", "password", "domain") })
          {
               client.Headers.Add("Accept: application/json");
               return client.DownloadData(url);
          }
}

暫無
暫無

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

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