在某些情况下,使用SharePoint Web服务的桌面应用程序最终会使用具有空值的DefaultNetworkCredentials,因此调用失败。我需要获取用户凭据,但我还没有找到一种直接的方法。
我正在考虑实施http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html
中列出的解决方案...但是,这仍然需要我处理密码,我真的不想这样做。我看了,但是找不到更直接的方法来提示用户并直接返回NetworkCredential,而不必存储密码?
谢谢,
编辑:看起来我不会找到我正在寻找的东西......当发生这种情况时,我必须自己提示用户。但是,如果我正确地解释其中一些答案,那么DefaultNetworkCredentials首先就像这样是一个错误的条件。是这样的吗?有没有办法强制DefaultNetworkCredentials填充,或者它是否真的是一个简单的缓存,它只记住用于目标URI的最后一个域/用户ID /密码(那天?那个应用程序/会话?)。
答案 0 :(得分:0)
处理基础问题,即空凭证,而不是唠叨用户输入的信息。
除非您希望他们能够以不同于当前帐户的方式登录SharePoint(可能是一个有用的功能)。
.NET有处理凭据的代码,那么为什么要通过外部dll并为你的应用添加另一个依赖来猜测呢?
我对您环境中的代码安全风险知之甚少,但我认为将凭证对象存储在客户端内存中对于大多数情况来说“足够安全”。
答案 1 :(得分:0)
我认为你不能避免第一次处理它们。但是,您将成为Credential Manager的一个钩子,以便从那时起缓存它们。 Here's an article on how to do that。它在p / invoke中很重要,但可以为您的用户提供更一致的体验。
答案 2 :(得分:0)
我不知道为您处理密码的内容,但SecureString可能有用。