0

在过去的 2 年中,我们为我的一个客户创建了 3 个桌面应用程序和 2 个管理部分(网络)。每个应用程序都使用自己的身份验证过程。我已将 Web 的身份验证过程合并到一个单元中。但是客户希望有一个屏幕用于在桌面应用程序和网站上进行身份验证。

他还想使用不同的浏览器,用户名/密码应该只询问一次,而不管浏览器是否打开。

我尝试将 cookie 用于网络。但是每个浏览器都有自己的 cookie。

任何人都可以建议我如何对整个计算机的用户进行身份验证,以便无论使用哪种浏览器,身份验证信息都可用于桌面应用程序以及网站?

编辑: 正如乔所建议的那样,在我的情况下,使用 Windows 身份验证是不可能的。因此,我创建了一个带有以下列 ip、userid、authenticatedat 的表,当用户通过身份验证时,我将其 ip、userid 和时间插入表中。当一个非身份验证用户首先出现时,如果 ip 存在并且authenticatedat 在 30 分钟内,我会在表中查看我假设用户已通过身份验证并使用所需数据设置会话/变量。我已经检查并发现它正在工作。

我发现这并不安全。

4

1 回答 1

0

Windows 身份验证是我知道的唯一方法。假设您的用户位于您控制的域中,那么他们的 Windows 凭据将验证他们,并且他们永远不需要输入用户名和密码。

除此之外,我只能想到让这件事发生的骇人听闻的肮脏方法。您可以在他们的机器上安装一个身份验证服务,该服务可用于从其他应用程序远程连接 - 这些应用程序将调用您的服务,该服务将对用户进行身份验证并将身份验证令牌传回。对于 Windows 应用程序来说足够简单,但在 Web 应用程序上实现这一点并不有趣。您的 Web 服务器将无法与此服务通信,因此您必须依赖客户端 javascript 与服务通信并检索令牌或哈希,然后 javascript 将其传递给 Web 服务器。

你放在本地机器上的任何东西,你都必须假设用户可以逆向工程和操作,所以如果你需要真正的安全性,我怀疑你会找到解决方案。最好的办法是让用户在每次需要时登录,并在您的 Web 服务层上有您的身份验证/授权代码。

于 2013-04-01T06:56:37.363 回答