您可以通过在Auth服务器上进行所有登录来实现此目的.其他应用程序可以通过后端通道与认证服务器进行通信.一般原则就是这样;
>用户访问应用程序1
>应用程序1需要用户登录,因此它通过后台通道向令牌服务器发送令牌.应用程序1然后将用户重定向到身份验证服务器上的登录页面,令牌作为请求上的参数.
>用户登录到auth服务器.验证服务器设置一个cookie,将令牌标记为已认证,并将用户详细信息与之相关联.然后,认证服务器将用户重定向到应用程序1.
>应用程序1从用户获取请求,并通过后台通道调用auth服务器,以检查令牌是否正常.用户详细信息的Auth服务器响应.
>应用程序1现在知道用户被授权并具有一些基本的用户细节.
现在这是SSO的一部分.
>用户访问应用程序2.
>应用程序2需要用户登录,因此它通过后台通道向令牌服务器发送令牌.应用程序2然后将用户重定向到身份验证服务器上的登录页面,令牌作为请求的参数.
> Auth服务器看到cookie中有一个有效的日志,所以它可以告诉用户已经被认证,并且知道他们是谁.认证服务器将令牌标记为已认证,并将用户详细信息与之相关联.然后,认证服务器将用户重定向到应用程序2.
>应用程序2从用户获取请求,并通过后台通道调用auth服务器,以检查令牌是否正常.用户详细信息的Auth服务器响应.
>应用程序2现在知道用户被授权并具有一些基本的用户细节.
这种方法有一些现有的实现,例如CAS(中央认证服务).请注意,CAS在Spring Security中支持开箱即用.我建议使用现有的实现来看待自己的写作将是困难的.我已经在我的答案中简化了一些事情,如果你是新来的,那么很有可能引入安全漏洞.