我有一套三个网络应用系统--A,B& C用于维护我的应用程序。 A系统具有核心业务逻辑,还存储整个应用程序的用户/帐户数据。系统B& C需要为应用程序提供附加功能。
我在考虑一种安全机制,其中用户U登录到主系统A并且系统为当前会话创建安全令牌,这将需要验证来自用户U的请求到其他系统B& ; C.当用户登录系统A时,它在内部生成令牌并将令牌x-y-z发送到子系统B& C.现在,每当用户U向子系统B& B发送请求时。 C使用有效令牌,将允许用户访问资源。但是,我不确定这是最好的方法还是正确的方法。
所以,我对完整的工作流程感到有点困惑,我们将非常感谢这方面的任何帮助。
我使用Java开发,因此任何管理它的模块都将节省大量的开发时间。请指导我。
答案 0 :(得分:2)
您所描述的此模型是一种信任托管形式,其中多个客户端信任第三方来处理用户身份验证。
请参阅Kerberos分布式安全系统。
Kerberos协议及其Web应用程序实现Stanford WebAuth比您所描述的更具优势:
如果您不需要完整的Kerberos身份验证(实现起来很复杂),我会鼓励这样的模型:
这是一种基本的身份验证令牌协议。它在几个方面存在缺陷,但仍然比发送用户密码更好。
答案 1 :(得分:0)
这种安排也有效: 您可以将所有请求重定向到服务器A,B和C,首先只将服务器A重定向到服务器A,因为它具有您的所有用户相关数据。现在,一旦请求已经过身份验证(您希望使用哪种方法),并且在业务逻辑中,您需要在服务器之间进行INTERNAL调用。为此,您可以使用在每个服务器上创建部署时的内部用户,并将其授权令牌存储在钱包中。 从钱包中获取此内部用户的身份验证令牌并启动呼叫,其他服务器将授权用户。 注意:如果您需要执行此操作的实际用户,则无法从Auth Token派生该信息,因为该令牌属于内部用户。在这种情况下,您可以在http授权标头中传递当前登录的用户名。