gpt4 book ai didi

java - Spring MVC - 2 个不同的 Web 应用程序尝试彼此交互(安全)

转载 作者:行者123 更新时间:2023-11-30 04:02:16 24 4
gpt4 key购买 nike

我们有 2 个不同的 Web 应用程序在同一个 tomcat 上运行。

网络应用#1,网络应用#2。

Webapp#1 正在通过此服务方法连接到 webapp#2:

this.restTemplate.postForObject(url,
request,
responseType);

webapp#2 正在以下 Controller 中接收此请求:

@RequestMapping(value = "/bla", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public ResponseDTO requestSomething(@RequestBody RequestDTO requestDTO, HttpServletRequest request) {

return new ResponseDTO("Hello");
}

现在,我们有一个安全要求,即我们在 webapp#2 中公开的 Controller 只能接收来自 webapp#1 的请求。

为了实现这一目标,我们有哪些替代方案?我们是否必须在 webapp#1 的 webapp#2 中创建一个新 session ?如果是的话,凭证从哪里来?我们应该就一些预先确定的事情达成一致吗?spring security有什么办法解决这个问题吗?

谢谢!

最佳答案

如果有人能告诉我在同一个容器中是否有一种特殊(且好的)方式来处理 Web 应用程序,我很高兴,但据我所知,这些是选项:

选项 1:忽略它们在同一个 Tomcat 中

换句话说,就像两个网络应用程序位于两个不同的位置一样。例如,您可以使用 HTTP Basic authentication ;在客户端(webapp#1)上添加 RestTemplate 的授权头的 ClientHttpRequestFactory 实现相当容易,并且 Spring Security 内置了处理它的支持服务器端(webapp#2)。通过基本身份验证,通信可以是无状态的,并且不需要 session 。唯一的缺点是两个网络应用程序都需要知道凭据。

选项 2:检查本地主机

这个想法是在 webapp#2 中检查请求来自哪里。将 ServletRequest.getRemoteAddr() 与 127.0.0.1(或任何其他环回地址)进行比较。如果要应用 Spring Security,则需要在安全链中创建自定义过滤器。优点:webapp#1 不需要任何凭据。缺点:根据您的服务器设置,这可能不安全!如果用户可以在计算机上打开连接,则它可以假装是 webapp#1。如果计算机上有某种代理,请格外小心。

关于java - Spring MVC - 2 个不同的 Web 应用程序尝试彼此交互(安全),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21696915/

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