繁体   English   中英

休息呼叫WebException 401仅在混合身份验证Webapp中未经授权

[英]Rest call WebException 401 Unauthorized only in mixed authentication webapp

尝试从SharePoint应用程序外部(特别是来自.NET控制台应用程序)进行调用时,遇到了一个奇怪的行为。 只要我使用DefaultCredentials,一切都很好,只要我的Web应用程序不允许FBA(基于表单的身份验证),我就可以毫无问题地移交NetworkCredentials。

但是,一旦激活了FBA身份验证,我将无法拨打其余电话,并返回401未经授权。

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

一种可行的解决方法是将SharePoint Web应用程序扩展到第二个区域-并且在该区域上未打开FBA。 因此,您将具有以下内容:www.mysharepointsite.com <-FBA + Windows身份验证访问restapi.mysharepointsite.com <-仅Windows身份验证

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM