【问题标题】:Different Credentials on Domain PC and SharePoint site. Who's Credentials are used for HTTP Request?域 PC 和 SharePoint 站点上的不同凭据。谁的凭据用于 HTTP 请求?
【发布时间】:2014-06-22 14:58:02
【问题描述】:
给定一个使用 Windows 身份验证的 SharePoint 2010 站点,如果 UserA 登录到域中的 PC,则 UserB 使用 PC 使用域凭据登录到 SharePoint 站点,然后加载一个 WebPart,该 WebPart 将 HTTP 请求发送到互联网,HTTP 请求使用了谁的凭据?
【问题讨论】:
标签:
http
authentication
sharepoint
sharepoint-2010
request
【解决方案1】:
在发送 HTTP 请求时,将使用当前登录到 SharePoint 站点的用户的凭据。
如果站点和 SharePoint 位于同一个域中,SharePoint 提供了自动登录的便利,但如果用户注销并且新用户登录,则将使用新用户凭据,它与谁登录无关到系统。
谢谢
萨希尔
【解决方案2】:
我假设你会这样做:
WebClient webClient = new WebClient();
webClient.Credentials = System.Net.CredentialCache.DefaultCredentials;
byte[] data = webClient.DownloadData("address");
不会使用 UserA 和 UserB 凭据。
如果您使用默认 NTLM Windows 身份验证协议,则不可能以登录用户的身份进行任何外部(对任何其他计算机)请求。
如果您的域被配置为使用 Kerberos 协议,那么 SP 可能能够(根据 Kerberos 配置)以在另一台计算机上运行的登录用户服务(例如 HTTP)的身份进行外部调用。
如果您将调用 HTTP 请求封装到 SPUtility.RunWithElevatedPriviliges 请求将在 SharePoint 系统帐户(类似于 sp_service)的身份下完成。