我开始为我们为同一个客户端制作并仍在维护的 3 个不同的 web 应用程序开发SSO解决方案。
问题是,所有 3 个都通过第四个单独的应用程序将他们的用户和登录信息存储在同一个地方,该应用程序只提供基本的 restful api 服务。这基本上意味着当一个人尝试登录时,我们实际上会调用其余服务来询问此用户名和密码是否正确。
在某种程度上,这第四个宁静的东西已经完成了我们需要的至少一半的工作。
我们现在需要一种方法让用户登录到 webapp A,然后点击链接(或简单地输入其 url)到 webapp B(或简单地输入其 url)并到达已登录的位置(反之亦然)。
我已经阅读了很多关于CAS和openID甚至oauth的内容,但我并不能真正下定决心。这种模式是中心化的吗?去中心化?
我的一万英尺视图表明我只需要以某种方式将这个“缺失的功能”添加到我们宁静的 api 服务器。
但是怎么做?
ps:这3个是完全分开的。部署在不同的机器上(其中两台在 glassfish 上运行,另一台在 tomcat 上运行)。不同的域也是。
pps:它们都是 spring 驱动的 webapps(因此它们使用spring-security)
ppps:截至今天,还有其他 webapps 使用我们的 restul api(非 spring,非 java)。这个 sso 解决方案可能也必须准备好处理这些问题。