2

尝试从 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 的目标?

4

1 回答 1

0

应该可行的解决方法是将您的 SharePoint Web 应用程序扩展到第二个区域 - 并且在该区域上没有打开 FBA。所以你会有这样的东西:www.mysharepointsite.com <- FBA + Windows 身份验证访问 restapi.mysharepointsite.com <- 仅 Windows 身份验证

然后只需将您的呼叫指向 restapi.mysharepointsite.com 而不是 www.mysharepointsite.com。

于 2014-01-29T17:57:07.690 回答