Java SpringMVC-2个试图相互交互的不同web应用程序(安全性)

Java SpringMVC-2个试图相互交互的不同web应用程序(安全性),java,spring,web-services,spring-mvc,spring-security,Java,Spring,Web Services,Spring Mvc,Spring Security,我们有两个不同的web应用程序运行在同一个tomcat上 网络应用程序1,网络应用程序2 Webapp#1正在通过以下服务方式连接到Webapp#2: this.restTemplate.postForObject(url, request, responseType); webapp#2正在以下控制器中接收此请求: @RequestMapping(value = "

我们有两个不同的web应用程序运行在同一个tomcat上

网络应用程序1,网络应用程序2

Webapp#1正在通过以下服务方式连接到Webapp#2:

this.restTemplate.postForObject(url,
                                request,
                                responseType);
webapp#2正在以下控制器中接收此请求:

@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中展示的这个控制器将只接收来自webapp#1的请求

在实现这一目标方面,我们有哪些备选方案?我们是否必须从webapp#1在webapp#2中创建新会话?如果是的话,这些凭证来自哪里?我们应该在一些预先确定的问题上达成一致吗? spring security有办法解决这个问题吗


谢谢

如果有人能告诉我,在同一个容器中是否有一种特殊(且好)的Web应用程序方式,我会很高兴,但请注意以下选项:

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

换句话说,就像两个webapp位于两个不同的位置一样。例如,您可以使用;在客户端(webapp#1)为
restemplate
添加授权头的
clienthttpprequestfactory
实现非常简单,Spring Security内置了在服务器端(webapp#2)处理它的支持。使用基本身份验证,通信可以是无状态的,不需要会话。唯一的缺点是两个web应用都需要知道凭据

选项2:检查本地主机

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