我开始为我们制作的3个不同的网络应用程序开发 SSO 解决方案,并且仍然为同一个客户端维护。
事实上,所有3个人通过第四个单独的应用程序将他们的用户和登录信息存储在同一个地方,该应用程序只提供基本的restful api服务。 这基本上意味着当一个人试图登录时,我们实际上会调用其他服务来询问这个用户名和密码是否正确。
在某种程度上,这第四个宁静的东西已经至少我们需要的工作的一半。
我们现在需要的是让用户登录webapp A,然后按照链接(或简单地键入其URL)到webapp B(或只是输入其URL)并且已经记录(或反之亦然)。
我一直在阅读很多关于 CAS 和 openID 甚至 oauth 的内容,但我无法真正决定它。 这个模式是集中的吗?分散?
我的一万英尺的视图表明我不知何故只需要将这个“缺失的功能”添加到我们的restful api服务器中。
但是怎么样?
ps:这3个完全分开。部署在不同的机器上(其中2台在glassfish上运行,另一台在tomcat上运行)。不同的领域。
pps:他们都是弹簧驱动的webapps(因此他们使用 spring-security )ppps:截至今天,还有其他的webapps使用我们的restul api(非spring,非java)。 这个解决方案可能必须准备好处理它们。
答案 0 :(得分:4)
是的,听起来你需要一个“真正的”单点登录系统,而不仅仅是一个集中的凭证存储库。正如您所提到的,有几种选择:
答案 1 :(得分:0)
SSOff也很简单:只需将用户数据库中的每个请求检查到bool记录(userLogged)。没有重定向。注销时只需将记录(userLogged)更改为false,每个站点都会知道。