如何使用与 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 凭据

域 PC 和 SharePoint 站点上的不同凭据。谁的凭据用于 HTTP 请求?

Sharepoint 区域身份验证不起作用

在 SharePoint Web 应用程序和 ASP.NET Web 应用程序之间传递用户凭据