【发布时间】:2021-01-07 19:02:11
【问题描述】:
我有自己的 C# Web API 服务(面向 .NET 5.0),它位于本地 SharePoint 2019 所在的同一台服务器上。我的代码调用内置的 SharePoint REST API 来进行搜索并返回结果(外界只会访问我的服务)。
我从该服务器上的 IE 调用 SharePoint REST API 没有问题。
在我的 Web API 服务 (https) 中,我使用与 IE 相同的 URL 调用 SharePoint Rest 服务 (http)
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(sharePointSearchServiceBaseUrl);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("account:password");
string val = System.Convert.ToBase64String(plainTextBytes);
client.DefaultRequestHeaders.Add("Authorization", "Basic " + val);
HttpResponseMessage response = await client.GetAsync("search/query?querytext='(oil*)'&rowlimit=100");
if (response.IsSuccessStatusCode)
{
var objResponse = response.Content.ReadAsStringAsync().Result;
return Content(objResponse);
}
很遗憾,client.GetAsync 的结果总是如下:
INFO 2021-01-07 01:24:18 状态码:401,ReasonPhrase:“未经授权”,版本:1.1,内容:System.Net.Http.HttpConnectionResponseContent,标头: { 服务器:Microsoft-IIS/10.0 SPRequestGuid:47049f9f-8244-1032-40ac-07df48a24632 请求 ID:47049f9f-8244-1032-40ac-07df48a24632 X 框架选项:SAMEORIGIN SPRequestDuration:6 SPIisLatency: 2 WWW-认证:NTLM X-Powered-By: ASP.NET 微软SharePointTeamServices:16.0.0.10368 X-Content-Type-Options: nosniff X-MS-InvokeApp:1;要求只读 日期:格林威治标准时间 2021 年 1 月 7 日星期四 18:24:18 内容长度:0 }
我已尝试传递我拥有的所有 SharePoint 帐户,所有这些帐户都给了我相同的 401。
任何解决此问题的见解将不胜感激。
【问题讨论】:
标签: c# authentication search sharepoint authorization