1

我正在编写一个有时会通过 VPN 使用的 ClickOnce WPF 应用程序。该应用程序使用仅对经过域身份验证的用户可用的资源。其中一些事情包括访问 SSRS 报告、访问 LDAP 以查找用户信息、访问 Web 服务等。

当用户从未在域上进行身份验证的机器登录时,我需要以某种方式获取他的凭据,在域上对他进行身份验证,并存储他的凭据。

  1. 通过 VPN 对域用户进行身份验证的推荐方法是什么?
  2. 如何安全地存储凭据?

我发现了几篇文章,但最近发布的文章不多,而且很多解决方案看起来有点老套,或者不是很安全(即 - 将字符串明文存储在内存中)。

如果我可以使用 ActiveDicrtoryMembershipProvider,那就太酷了,但这似乎是为在 Web 应用程序中使用而设计的。

编辑: 以上是一种解决方法。用户必须输入其域凭据才能在 VPN 上进行身份验证。访问用户已经输入的登录 VPN 的凭据而不是 WindowsIdentity.GetCurrent() (它返回登录到计算机的用户)将是理想的。关于如何工作的任何想法?我们使用瞻博网络连接到 VPN。

回答 我最终基本上按照以下链接中的建议进行操作。当应用程序启动时,我会检测用户是否在域中。如果是这样,我将在调用服务时使用这些凭据。如果用户在 VPN 上(但不在域认证的机器上),我会提示用户输入凭据并通过 System.DirectoryServices 进行身份验证。如果用户提供有效凭据,我会将域、用户和密码存储在 SecureString 中。然后,该应用程序使用该信息创建凭据以传递给各种服务。

谢谢!

4

1 回答 1

1

这个问题的答案可能会有所帮助。

- 编辑 -

嗯,只是想...

于 2010-04-28T14:59:09.047 回答