我有4个具有相同技术的单页应用程序:Spring MVC,Spring Security,Angulajs。
每个应用程序都有自己的ldap身份验证和授权。我们要构建一个单一的符号体系结构,并创建一个中央身份验证应用程序。并使其他四个应用程序使用该中央应用程序。
当用户登录其中一个应用程序时,他无需登录其他应用程序。

在服务器端和客户端强制执行此操作的简单方法是什么?

最佳答案

您想要的是单一登录(SSO)。有两种选择:


使用一些现有的SSO服务器,例如CAS
自己使用子域Cookie技术进行操作。


第一种选择正是您想要实现的。当您打开app1的URL时,您将被重定向到SSO服务器并提示您输入登录名/密码。成功通过身份验证后,您将被重定向到app1 URL。现在,如果您打开app2 URL,您将自动登录。优点之一是用户密码仅存储在SSO服务器中。

第二种选择是轻量级的IMHO,因为使用HTTP cookie而不是使用现有的SSO服务器在应用之间共享身份验证信息。另一方面,您需要编写一些最小的身份验证代码,这可能不太安全。

子域Cookie技术:


对所有应用程序使用子域(app1.domain.com,app2.domain.com)
当用户连接到app1时,生成一些令牌(您的会话ID),将其存储在某些共享数据库中,并作为domain.com的cookie
当用户打开app2时,检查令牌是否存在(作为domain.com的cookie),验证其是否有效(使用共享数据库)并允许访问。


这是一种非常简单的算法,没有考虑所有可能的安全漏洞(例如session fixation)。因此,如果您没有足够的时间来解决它们,那么最好选择第一种方法。

关于java - 如何使用Spring Security和angularjs应用程序构建中央标志架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21724053/

10-08 22:52
查看更多