我有两个应用程序,一个是桌面客户端,另一个是Web应用程序,可以选择将其嵌入到桌面客户端中。两者都与具有独立数据库和独立用户身份验证机制的独立服务器通信。服务器可以彼此通信。
我需要能够登录到桌面应用程序并使用嵌入式Web应用程序,而不必输入Web客户端的用户名/密码。
该网络应用是在我们这边开发的,因此可能会在一定程度上进行重大更改。体系结构是Windows(IIS和SQL Server)上的.NET。
桌面应用程序是在其他地方开发的,因此更改应尽量少;进行http请求并传递令牌是可以的,但是不能创建新的身份验证机制。体系结构未知,解决方案应独立于平台。
是否可以在两台服务器之间使用某种信任关系来创建一次性身份验证令牌,桌面客户端可以将该一次性身份验证令牌传递给Web客户端以创建会话?
我可以插入这个或另一个类似用例的任何现有实现吗?请注意,不一定需要Internet连接,只能保证访问这两个服务器。
如果没有任何简单/快速/免费的解决方案,我在想这样的事情(D是桌面应用程序,W是Web应用程序):
服务器之间的流量将通过SSL / TLS,被列入白名单的IP,使用预先配置的密码进行身份验证,并包括唯一的计数器和时间戳,以防止重放攻击。
桌面客户端将通过嵌入式浏览器向服务器发出请求,从而与Web应用程序进行通信。为了进行身份验证,它将HTTPS将用户名和令牌发布到登录页面。
假定客户端与其代表服务器之间的通信是安全的。
我还有什么想念的吗?
谢谢。
我认为干扰最小的解决方案将是最好的。我喜欢模块化身份验证的想法,您可以轻松地使用新的身份验证方法。您仅具有两个活动的身份验证模块。
让我们看一下服务器D:
似乎您已经在考虑这条路了,但是我建议您不要让服务器互相询问令牌。而是让服务器使用对该服务器有效的令牌互相询问会话数据。如果您使用服务器D上的用户/密码登录,请让服务器D为您提供与服务器D有效的会话令牌。然后,在与服务器W进行通信时,请服务器W询问服务器D给定的会话令牌是否有效。服务器D可以简单地返回是/否,或者返回给定令牌的所有公共会话数据。
与您建议的方案相比,此解决方案至少具有两个优点:
你怎么认为?有道理?
顺便说一句,我认为SSL可以防止重放攻击。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句