在过去的两年里,我们为我的一个客户创建了3个桌面应用程序和2个管理部分(web)。 每个应用程序都使用自己的身份验 我已经在单个单元中合并了web的身份验证过程。 但客户希望有一个屏幕可以在桌面应用程序和网站上进行身份验证。
他也想使用不同的浏览器,只要一次询问用户名/密码,无论浏览器是否打开。
我尝试将Cookie用于网络。但是每个浏览器都有自己的cookie。
任何人都可以建议我如何为整个计算机验证用户身份,以便桌面应用程序和网站都可以使用身份验证信息,而不管浏览器的使用情况如何?
编辑: 正如我所说,使用Windows身份验证的joe建议不可行。
所以我创建了一个包含以下列的表
IP,用户ID,authenticatedat
当用户通过身份验证时,我将其ip,userid和time插入表中。
当一个非认证用户出现时,如果ip存在并且authenticatedat在30分钟内,我会在表中查看我假设用户已经过身份验证并使用所需数据设置会话/变量。
我已经检查过,发现它正在工作。 击>
我发现这不安全。
答案 0 :(得分:0)
Windows身份验证是我知道这样做的唯一方法。假设您的用户位于您控制的域中,那么他们的Windows凭据将验证它们,并且他们不需要输入用户名和密码。
除此之外,我只能想到实现这一目标的黑客肮脏方法。您可以在他们的计算机上安装单个身份验证服务,该服务可以从其他应用程序远程连接 - 这些应用程序将调用您的服务,该服务将对用户进行身份验证并返回身份验证令牌。对于Windows应用程序来说足够简单,但在Web应用程序上工作并不会很有趣。您的Web服务器将无法与此服务通信,因此您必须依赖客户端javascript与服务进行通信并检索令牌或散列,然后将javascript传递给Web服务器。
你放在本地机器上的任何东西,你必须假设用户可以进行逆向工程和操作,所以如果你需要真正的安全性,我怀疑你会找到一个解决方案。最好的办法就是让用户每次需要登录,并在您的Web服务层上获得身份验证/授权代码。