gpt4 book ai didi

java - 在不同的 Web 应用程序中使用 Spring Security

转载 作者:行者123 更新时间:2023-11-30 05:40:01 28 4
gpt4 key购买 nike

我正在构建一个服务器应用程序ROOT.war(包含spring security)和一个UI应用程序viewer.war

是否可以在ROOT.war中声明适用于viewer.war的Spring安全配置?

例如ROOT.war 中的 intercept-url:

<security:intercept-url pattern="/viewer/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/**" access="permitAll()"/>

我已经找到了使用 hazelcast 在 Web 应用程序之间“共享” session 信息的解决方案。

设置:

/ - server webapp, publishing services and providing spring-security
/viewer - UI webapp, consuming server services and accessing session data from the server

编辑:
我正在共享 session ,因为无法跨两个网络应用程序访问相同的 session 数据。成功登录后将用户名存储在ROOT中的 session 中,在/viewer中将不可用(也可以使用文件 session 存储)。
但这不是我要问的问题。
我想知道即使另一个 web 应用程序称为 /viewer ,是否使用 spring-security 过滤器,它不使用 spring security。 ROOT 的 Spring Security 配置是否也适用于 /viewer Web 应用程序?

流程:

  • 用户在浏览器中请求/viewer
  • spring security从ROOT实现用户未登录
  • 转发到登录页面/login
  • 成功登录后,转发到原始请求/查看者(持有用户名的 session )

最佳答案

我不确定是否真正了解您的需求。 Spring Security是一个AOP框架,通过过滤器拦截请求。每个过滤器都可以根据安全规则拒绝请求。

共享 session (在 hazelcast、redis 或其他上)的需求来自于您有多个 ROOT.war 服务器的情况,每个服务器都是负载均衡的,并且对于每个用户,您不知道请求去了哪里。 session 必须在服务器之间共享。

我想您可以允许您的客户端访问 hazelcast session ,但是这样做的目的是什么?

编辑:我认为你想要的是某种代理。您需要首先在 ROOT 上发送请求,如果成功登录,则在 VIEWER 上继续。

你可以这样做,但是所有对VIEWER的请求都需要通过ROOT。 ROOT 将请求发送给 VIEWER。

您还可以采用其他方法,例如 JWT。从 ROOT 生成 JWT,并在 VIEWER 上需要它。

关于java - 在不同的 Web 应用程序中使用 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55843526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com