如何使用与 Sharepoint 相同的凭据调用 Web 服务?
Posted
技术标签:
【中文标题】如何使用与 Sharepoint 相同的凭据调用 Web 服务?【英文标题】:How to call webservice using same credentials as Sharepoint? 【发布时间】:2009-08-17 16:13:19 【问题描述】:是否可以在从 sharepoint 服务器下载的 Excel 工作表中使用与用于访问 Sharepoint 服务器的凭据相同的凭据进行 Web 服务调用?
我们目前正在开发一个 Excel 解决方案,该解决方案从 Excel 工作表中执行 Web 服务请求。这可以正常工作,但用户必须至少登录两次:一次用于从 Sharepoint 下载/打开 Excel 工作表,一次用于使用正确的凭据执行 Web 服务。
Sharepoint 服务器和客户端计算机不在同一个 Active Directory 域中。所以“System.Security.Principal.WindowsIdentity.GetCurrent()”不是一个选项,因为这将返回服务器上不存在的用户。
【问题讨论】:
【参考方案1】:您可以使用 VSTO(Visual Studio Tools For Office)来创建 Excel 插件。每次打开 Excel 时都会加载该插件,并且可以包含按钮等。
要使用 Sharepoint 的系统帐户,您必须使用 RunWithElevatedPrivileges。这有一些安全隐患! http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx
通常,Web 服务会考虑登录的用户凭据。 如果不是,您始终可以使用 NetworkCredential 类手动创建它们。
System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
NetworkCredential netCred = new NetworkCredential("UserName", "Password");
myCredentials.Add(new Uri(myService.Url), "Basic", netCred);
myService.Credentials = myCredentials;
// 在此处访问您的 Web 服务方法
【讨论】:
以上是关于如何使用与 Sharepoint 相同的凭据调用 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
从 .Net 应用程序访问 SharePoint 数据时处理凭据
如何使用凭据连接到SharePoint列表使用客户端对象模型?
使用 Powershell 插入 Sharepoint 凭据