Authentication 来自桌面应用程序的Sharepoint 2013 REST api-身份验证

Authentication 来自桌面应用程序的Sharepoint 2013 REST api-身份验证,authentication,oauth-2.0,sharepoint-2013,Authentication,Oauth 2.0,Sharepoint 2013,我正在尝试从桌面应用程序(跨平台、跨操作系统)使用SharePoint 2013 REST services。应用程序基本上是应用程序视图中的HTML页面。 有没有一种简单的方法可以使用HTTP方法对调用进行身份验证 是的,您可以通过REST调用获得身份验证并接收摘要 stringurl=”http://Your.SP.Site"; HttpClient客户端=新HttpClient(新HttpClientHandler(){UseDefaultCredentials=true}); clie

我正在尝试从桌面应用程序(跨平台、跨操作系统)使用SharePoint 2013 REST services。应用程序基本上是应用程序视图中的HTML页面。
有没有一种简单的方法可以使用HTTP方法对调用进行身份验证

是的,您可以通过REST调用获得身份验证并接收摘要

stringurl=”http://Your.SP.Site";
HttpClient客户端=新HttpClient(新HttpClientHandler(){UseDefaultCredentials=true});
client.BaseAddress=newsystem.Uri(url);
字符串cmd=“\u api/contextinfo”;
Add(“Accept”,“application/json;odata=verbose”);
client.DefaultRequestHeaders.Add(“ContentType”、“application/json”);
client.DefaultRequestHeaders.Add(“ContentLength”,“0”);
StringContent httpContent=新的StringContent(“”);
var response=client.PostAsync(cmd,httpContent).Result;
if(响应。IsSuccessStatusCode)
{
字符串内容=response.content.ReadAsStringAsync().Result;
JsonObject val=JsonValue.Parse(content.GetObject();
JsonObject d=val.GetNamedObject(“d”);
JsonObject wi=d.GetNamedObject(“GetContextWebInformation”);
retVal=wi.GetNamedString(“FormDigestValue”);

}
请原谅我可能的无知,但是如果不包含用户名和密码,这怎么办?UseDefaultCredentials是否以某种方式将它们包含在标题中?第二行代码包含“UseDefaultCredentials=true”,因此它们是。这只适用于配置为使用Windows身份验证的SharePoint安装,当然,也可以通过创建NetworkCredential来传递凭据。我没有使用.NET,所以这有点令人困惑。他们到底从哪里来的?它们是否为特定格式?它们是从操作系统传递的,并使用.NET中的当前用户凭据,即使您指定了一个凭据,它也只是您设置用户名和密码参数的一个凭据,并传递给HttpClient。根据您使用的语言,您需要在StackExchange上查找示例或询问如何通过SharePoint身份验证。这个例子除了从响应中提取摘要之外,很可能不会在.NET之外进行翻译。我发现这一点,它可能适用于基本身份验证,但我没有尝试过:静态字符串_FormatBasicAuth(字符串域,字符串用户,字符串密码){const string format0=@{0}\{1};const string format1=@{0}:{1}“字符串用户名=string.Format(format0,域,用户);返回Convert.ToBase64String(Encoding.Default.GetBytes(string.Format(format1,用户名,密码));}System.Net.Http.HttpClient _Client=new System.Net.Http.HttpClient()_Client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“基本”,_FormatBasicAuth(域、用户、密码));