如何使用与Sharepoint相同的凭据调用webservice?

问题描述:

是否可以使用与用于访问Sharepoint服务器相同的凭据从已从SharePoint Server下载的Excel工作表中执行Web服务调用?如何使用与Sharepoint相同的凭据调用webservice?

我们目前正在开发一个Excel解决方案,它可以在Excel工作表中完成web服务请求。这可以正常工作,但用户必须登录至少两次:一次用于从Sharepoint下载/打开Excel工作表,另一次能够使用正确的凭据执行Web服务。

Sharepoint服务器和客户机不在同一个Active Directory域中。因此“System.Security.Principal.WindowsIdentity.GetCurrent()”不是一个选项,因为这将返回服务器上不存在的用户。

您可以使用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服务方法,在这里