多个Spring项目,共享身份验证

Wou*_*ter 5 java spring spring-mvc spring-security java-ee

我有大约10个Spring-MVC项目,它们部署在家里的Wildfly服务器上.这些项目已经运行了很长一段时间,并且一直是私有的.

然而,我的一些朋友已经请求访问,我愿意给他们.我打算通过使用AngularJS构建Web应用程序来实现这一目标.该应用程序将通过调用RESTful端点与Spring-MVC项目进行通信.但是,有些人可能会访问一部分服务.我希望人们注册并使用这些详细信息登录或使用OpenID登录.

这导致必须向这些项目添加身份验证和授权.可以使用Spring Security完成.但是,我不想在每个服务中实现此逻辑.

是否可以创建额外服务并让人们登录或注册此服务?让其他服务使用此服务检查身份验证状态?

哪种Spring-Security安全模型可以智能使用(OAuth 1.0,OAuth 2.0,基本身份验证等)?

有没有其他方法来实现我的要求?

Ang*_*ity 4

通常的解决方案是将所有服务器放在一个通用的身份验证代理后面,该代理为用户提供一个外观常见的登录页面。身份验证代理通过将用户名和密码与 LDAP 或数据库表中注册的值进行比较,或者通过 OpenId 来检查用户的身份。

如果身份验证成功,代理将开始将用户请求重定向到用户经过身份验证的服务器。

从代理转发到终端服务器的每个请求都带有一个预身份验证标头,其中包含凭据,这些凭据向应用程序证明重定向的请求确实来自代理,并且不是伪造的请求。

每个 Spring 应用程序都设置为不提供登录页面,而是检查预身份验证标头。这是设置Pre-Authentication的 Spring 文档。

查看与 Siteminder 身份验证代理集成的示例。

该解决方案的核心是用户不直接向终端服务器发出请求,所有请求都通过代理,在您的情况下需要支持 OpenId。