2011-06-24 57 views
1

我有一个使用窗体身份验证的ASP.NET应用程序。ASP.NET窗体身份验证和调用Web服务

我需要调用的Sharepoint search.asmx Web服务从网络检索满足搜索条件的文件列表(有一个很好的理由让我这样做的Sharepoint之外)

我不知道我需要通过search.asmx的安全信息。我已经试过: queryService.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials queryService.ClientCredentials.Windows.AllowedImpersonationLevel = Security.Principal.TokenImpersonationLevel.Impersonation

哪位在我的开发环境作为我的工作用户有权访问正在访问的文件共享Sharepoint。我无法理解,并且无法从调试或事件查看器等推断出什么是在我将这些代码部署到服务器上时,在上述代码中传递的凭据。

在使用表单认证之前,它会通过打开IE窗口的用户的Windows凭据吗?它是否会传递运行asp.net组件的帐户的凭证,即我正在运行的AppPool的帐户,还是会传递其他内容?

我似乎无法让Sharepoint返回任何文件,我猜这是因为传递的凭据无法访问文件共享。

感谢 安迪

回答

1

为了得到这个工作很快就可以与您的用户名密码&访问SharePoint Web服务。这显然不是长期的最佳解决方案。

设置在SharePoint Web服务代理凭据属性您的用户名密码&:

spProxy.Credentials = new NetworkCredential("username", "password", "domain"); 

你需要确保凭证属性设置调用Web服务之前。

我不是SharePoint专家(我只用它作为开发人员),但我相信它只使用Windows身份验证来保护Web服务。因此,如果您想以登录用户的身份访问Web服务,表单身份验证不会帮助您(除非您使用LDAP手动验证用户名&的密码)。 ASP.NET模拟&只有在使用Windows身份验证时,委派才有意义。

正如伪代码所述,您可能需要设置一个特殊帐户来从Web服务器访问SharePoint。

+1

谢谢。我应该说我的表单身份验证不再需要通过Active Directory进行身份验证,所以理论上我应该能够处理“真实”用户(我使用表单身份验证,因为用户需要在机器上登录应用程序他们可能不会自己登录) – andrew

+1

我有完全相同的场景。您可以在用户登录时存储用户名和密码(可能位于表单故障单中的用户数据字符串或会话状态中)。当您准备好调用webservice时,将值放在networkcredential对象中。如果它对你有帮助,请将其标记为答案。 –

相关问题