2013-01-09 48 views
4

我们正在开发C#和WPF上的Word加载项。Word加载项:获取用于从SharePoint打开文档的用户凭据

文档从SharePoint打开,该文档位于另一个域中,并使用加载项进行处理。 打开文档时,MS Word会要求输入SharePoint域的凭据。

在Word加载项中,我需要检索这些凭据或任何安全令牌以与SharePoint进行交互操作。

当我尝试从C#使用CredentialsCache时,我获取本地Windows /域帐户的凭据,但不是Sharepoint域帐户。

据我所知,Word存储SharePoint的凭据,因为我可以签入/签出并保存而无需重新输入密码。

但我可以以某种方式从代码中获取这些凭据以访问SharePoint服务而无需重新提示密码吗?

回答

1

如果被调用的Web服务使用Windows集成安全性,则从当前WindowsIdentity创建NetworkCredential应该足以允许Web服务使用当前用户的Windows登录。但是,如果Web服务使用不同的安全模型,则无法从当前身份提取用户密码......本身并不安全,允许开发人员窃取用户密码。您可能需要为您的用户提供某种方式来提供其密码,并且如果您不希望他们必须重复提供密码,请将其保存在某个安全缓存中。

编辑:为了得到当前的身份凭证,使用以下命令:

Uri uri = new Uri("http://tempuri.org/"); 
ICredentials credentials = CredentialCache.DefaultCredentials; 
NetworkCredential credential = credentials.GetCredential(uri, "Basic");