java - Spring中的模块集成和安全

标签 java spring-mvc architecture spring-security osgi

我有几个多模块 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/

相关文章:

caching - 存储另一个服务的数据是否违反微服务的单一职责原则

node.js - 在微服务之间共享代码

java - 改造自定义回调通用类型

java - Spring-boot 应用程序在执行器端口上抛出错误

java - 在应用程序中验证 Aadhar 卡号

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name

architecture - 如何设计可扩展的应用程序?

java - 为什么它会执行两次 if 并且第二次返回 null ?

java - 我可以使用什么来代替 "this"作为传递参数?

java - Jmeter中用于REST服务测试的可变路径参数