Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP上的NTLM:有C#客户端实现吗?_C#_Sharepoint_Windows Authentication_Ntlm - Fatal编程技术网

HTTP上的NTLM:有C#客户端实现吗?

HTTP上的NTLM:有C#客户端实现吗?,c#,sharepoint,windows-authentication,ntlm,C#,Sharepoint,Windows Authentication,Ntlm,我需要以编程方式从服务器下载文件 当我下载文件时,它看起来像一个请求,但显示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 NT

我需要以编程方式从服务器下载文件

当我下载文件时,它看起来像一个请求,但显示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>
REQ1:获取https://mycorp.raxsp.com/_windows/default.aspx?ReturnUrl=/personal/mycorp_user1/_vti_bin/cmis/rest?getRepositories
响应1:401未经授权,WWW验证NTLM
要求2:授权书=
响应2:401,WWW-Authenticate-NTLM-tlrmtvntuaacaaacgadgadgaaafgokc+[…]
要求3:授权NTLM TLRMTVNTUAADAAAAAAYA[…]
RESP3:302找到,设置Cookie FedAuth=77u/PD94bW[…],Location/personal/mycorp\u user1/\u vti\u bin/cmis/rest?getRepositories
要求4:GET/personal/mycorp\u user1/\u vti\u bin/cmis/rest?getRepositories
回复4:200好的,
我试着用一个简单的with user/password下载这个文件,但正如预期的那样,我只得到了错误401。我正在考虑实现全部4个请求,使用()计算挑战,但这听起来很容易出错

是否有客户端库或代码段可以通过HTTP进行NTLM身份验证?
它是为,所以必须是开源的,最好使用。

不涉及Kerberos/SSO/域。

我们一直使用
System.Net.WebClient

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);
          }
}

@gilly3的可能重复:这是一个不同的问题:1)我对IE8没有问题2)该问题的用户名“boxname\peter”表示涉及域。我的用户名不包含\。3) 问题是“客户端和IIS都在同一个窗口上”,这不是我的情况。4) 接受的解决方案显示“键入本地计算机上站点的主机名”。我在本地计算机上没有站点。当客户机和服务器都在同一台机器上时,就会出现这个问题,这不是我的情况。正如我从请求中看到的,它们如下所示:身份验证、设置Cookie、重定向、下载设置了cooke的文档。当您仅使用HttpWebRequest时,它可能会对您的请求进行身份验证,但不会请求使用随身份验证一起发送的客户端cookie的文档。因此,我假设NTLM在这里是正常的,而其余部分不起作用,它在我的上起作用。如果不适合您,请让我知道,我们可以比较项目设置