通过VPN从.NET客户端进行域身份验证

时间:2010-04-28 14:35:32

标签: c# .net wpf windows-authentication vpn

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

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

  1. 推荐的方法是什么? 对域用户进行身份验证     VPN?
  2. 如何安全存储凭据?
  3. 我发现了几篇文章,但最近发布的内容并不多,而且很多解决方案看起来有点笨拙,或者不太安全(即 - 在内存中存储字符串明文)。

    如果我可以使用ActiveDicrtoryMembershipProvider会很酷,但这似乎适合在网络应用中使用。

    修改 以上是一种解决方法。用户必须输入其域凭据才能在VPN上进行身份验证。理想的情况是访问用户已登录的VPN以登录VPN而不是WindowsIdentity.GetCurrent()(返回登录到计算机的用户)。有关如何运作的任何想法?我们使用Juniper Networks连接到VPN。

    答案 我最终基本上完成了link below中建议的内容。当应用程序启动时,我将检测用户是否在域中。如果是这样,我将在调用服务时使用这些凭据。如果用户在VPN上(但不在域认证的计算机上),我会提示用户的凭据并通过System.DirectoryServices进行身份验证。如果用户提供有效凭据,我会将域,用户和密码存储在SecureString中。然后,应用程序使用该信息创建凭据以传递给各种服务。

    谢谢!

1 个答案:

答案 0 :(得分:1)

This answer这个问题可能有所帮助。

<强> - 编辑 -

好吧,只是想......