我有几个多模块 Spring Web 应用程序,每个应用程序如下所示,每个应用程序都以不同的方式开发,没有互连。
war
|...webModule
|...coreModule
我想将它们与具有安全设置的管理模块集成。 我怎样才能做到这一点??他们有什么框架吗?
我经历了 OSGI 方法,但它有很多迁移工作。基于组件的怎么样(我从不这样做)...任何人都可以建议某种方法来创建我的集成应用程序,该应用程序可以处理其他子应用程序的常见登录和安全性吗? (需要单点登录多 war 解决方案)
最佳答案
我强烈建议阅读 Angular JS 和 Spring Security 系列,特别是相关的 https://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii
他们描述的方法似乎对您来说完全可行。要点
-
Spring Security uses the HttpSession to store authentication data by default. It doesn’t interact directly with the session though: there’s an abstraction layer (SecurityContextRepository) in between that you can use to change the storage backend.
通过管理模块进行身份验证后,您应该将身份验证数据存储到所有其他模块都可以访问的存储中,并使用 session ID 作为数据的 key 。您可以在 Spring Session 的帮助下轻松实现这一目标您可以在其中使用开箱即用的受支持的 Redis 作为身份验证数据的共享存储。
最后, key 将设置在针对其他模块的请求的自定义 header 内,该模块将使用此自定义 header 和更改后的 session 策略从存储中提取身份验证数据并对用户进行身份验证
该方法背后有很多细节,但该系列附带了示例实现,因此您应该能够找到自己的方法
关于java - Spring中的模块集成和安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659964/