尝试从 SharePoint 应用程序外部(特别是从 .NET 控制台应用程序)进行休息调用时,我遇到了一种奇怪的行为。只要我使用 DefaultCredentials 一切都很好,只要我的 web 应用程序不允许 FBA(基于表单的身份验证),我就可以毫无问题地移交 NetworkCredentials。
但是,一旦激活 FBA 身份验证,我就无法进行其余呼叫,并返回 401 Unauthorized。
var req = (HttpWebRequest)HttpWebRequest.Create("http://{url}/_api/web/title");
req.Method = "GET";
req.Credentials = new NetworkCredential("{user}", "{pass}");
req.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
var response = (HttpWebResponse)req.GetResponse();
我也尝试过这种方式来交出这样的凭据:
var req = (HttpWebRequest)HttpWebRequest.Create("http://{url}/_api/web/title");
req.Method = "GET";
req.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
var ccache = new CredentialCache();
ccache.Add(new Uri("http://{url}"), "Basic", new NetworkCredential("{user}", "{pass}"));
req.Credentials = ccache;
var response = (HttpWebResponse)req.GetResponse();
有没有人有提示或想法可能出了什么问题,以及我如何实现在混合身份验证 Web 应用程序中使用凭据访问 rest api 的目标?