0

在某些情况下,我使用 SharePoint Web 服务的桌面应用程序最终会出现具有空值的 DefaultNetworkCredentials,因此调用失败。然后我需要获取用户凭据,但我还没有找到一种直接的方法。

我正在考虑实施http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html中概述的解决方案

...但是,这仍然需要我处理密码,我真的不想这样做。我看过了,但还没有找到更直接的方法来提示用户并直接返回 NetworkCredential,而无需存储密码?

谢谢,

编辑:看起来我不会确切地找到我正在寻找的东西......当这种情况发生时,我必须自己提示用户。

但是,如果我正确解释了其中一些答案,则 DefaultNetworkCredentials 首先可能是这样的错误情况。是这样吗?有没有办法强制填充 DefaultNetworkCredentials,或者它真的是一个简单的缓存,它只是记住用于目标 URI 的最后一个域/用户 ID/密码(那天?那个应用程序/会话?)。

4

3 回答 3

0

解决根本问题,即空凭据,而不是唠叨用户以获取他们已经输入的信息。

除非您希望他们能够以不同于当前帐户的方式登录 SharePoint(也许是一个有用的功能)。

.NET 有处理凭据的代码,那么为什么要通过使用外部 dll 并为您的应用程序添加另一个依赖项来猜测呢?

我对您的环境中存在的代码安全风险知之甚少,但我认为仅将凭证对象存储在客户端内存中对于大多数情况来说“足够安全”。

于 2009-06-16T00:32:08.877 回答
0

我认为您无法避免第一次处理它们。但是,您可以连接到凭据管理器,以便从那时起缓存它们。 这是一篇关于如何做到这一点的文章。它在 p/invoke 中很重,但可以为您的用户提供更一致的体验。

于 2009-06-16T01:05:03.713 回答
0

我不知道可以为您处理密码的东西,但SecureString可能有用。

于 2009-06-16T03:10:24.020 回答