【问题标题】:Sharepoint 2013 REST api from desktop application - Authentication来自桌面应用程序的 Sharepoint 2013 REST api - 身份验证
【发布时间】:2015-09-09 22:14:54
【问题描述】:

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

【问题讨论】:

    标签: authentication oauth-2.0 sharepoint-2013


    【解决方案1】:

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

     string url = "http://Your.SP.Site";
                    HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
                    client.BaseAddress = new System.Uri(url);
                    string cmd = "_api/contextinfo";
                    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
                    client.DefaultRequestHeaders.Add("ContentType", "application/json");
                    client.DefaultRequestHeaders.Add("ContentLength", "0");
    
                    StringContent httpContent = new StringContent("");
                    var response = client.PostAsync(cmd, httpContent).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        string content = response.Content.ReadAsStringAsync().Result;
                        JsonObject val = JsonValue.Parse(content).GetObject();
                        JsonObject d = val.GetNamedObject("d");
                        JsonObject wi = d.GetNamedObject("GetContextWebInformation");
                        retVal = wi.GetNamedString("FormDigestValue");
                    }

    上面的示例展示了如何使用 HttpClient 在 C# 中检索摘要。需要将此字符串作为标头传递给您进行的所有其他其余调用以进行身份​​验证。如果需要,您可以通过传入用户名和密码来创建凭据。

    这里有更多例子:

    https://arcandotnet.wordpress.com/2015/04/01/sharepoint-2013-rest-services-using-c-and-the-httpclient-for-windows-store-apps/

    您也可以在 JavaScript 中执行这些调用,Microsoft 对此有很多文档。还有 .NET 库 Microsoft.SharePoint.Client.DLL (CSOM) 可简化此类编码,但您必须在客户端上安装该库。

    【讨论】:

    • 请原谅我可能的无知,但是如果不包含用户名和密码,这将如何工作? UseDefaultCredentials 是否以某种方式将它们包含在标题中?
    • 第二行代码包含“UseDefaultCredentials = true”,所以它们是。这仅适用于配置为使用 Windows 身份验证的 SharePoint 安装,但凭据也可以通过创建 NetworkCredential 来传递。
    • 我没有使用 .NET,所以这有点令人困惑。他们的凭据究竟是从哪里注入的?它们是某种格式吗?
    • 它们从操作系统传递并使用当前用户凭据,在 .NET 中,即使您指定了凭据,它也只是 object 您设置用户名和密码参数并传递给Http客户端。根据您使用的语言,您需要找到示例或在 StackExchange 上询问如何对 SharePoint 进行身份验证。除了从响应中提取摘要之外,此示例可能不会在 .NET 之外进行翻译。
    • 我发现了这个,它可能适用于基本身份验证,但我没有尝试过:静态字符串 _FormatBasicAuth(字符串域,字符串用户,字符串密码){ const string format0 = @”{0}\{1 }”;常量字符串格式1 = @”{0}:{1}”; string userName = string.Format(format0, domain, user); return Convert.ToBase64String(Encoding.Default.GetBytes(string.Format(format1, userName, password))); } System.Net.Http.HttpClient _Client = new System.Net.Http.HttpClient(); _Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(“Basic”, _FormatBasicAuth(Domain, User, Password));
    猜你喜欢
    • 2015-07-22
    • 2023-03-09
    • 2020-08-20
    • 2017-08-06
    • 2014-01-26
    • 2015-06-16
    • 2023-04-03
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多