JAVA - 跨应用程序身份验证

JAVA - Cross application authentication

本文关键字:身份验证 应用程序 JAVA      更新时间:2023-09-26



我有不同的java Web应用程序作为不同的模块在tomcat上运行,一个java Web应用程序作为插件运行在同一tomcat服务器上,作为另一个不同的模块。我想在不同的应用程序中使用插件(它本质上显示为弹出窗口,只是一个 javascript 文件,后端有几个 URL 映射的控制器(。

我允许在 Tomcat 领域内跨域请求插件,因此应用程序可以访问弹出窗口并重新处理数据。

Eg. in WebApp1, [http://localhost:8080/page1.html]:
ajaxGet(http://localhost:8081/getPopup, function(html){
    showPopup(html);
});

所有应用程序的架构都是一个简单的基于JSON的请求-响应驱动的UI,前端是javascript,JAVA后端是URL-controller/servlet映射。它

工作正常,但当然,它也适用于来自领域中应用程序内的任何请求,即使它们未经身份验证。 即,即使从登录页面,我也可以请求弹出窗口。

我该如何处理身份验证?考虑到插件不需要连接到数据库进行单独的身份验证,其身份验证取决于调用应用程序是否已通过身份验证。

提前感谢您的投入。 :)

实际上,您需要授权,这通常取决于身份验证。身份验证是告知服务谁在发出请求的过程,而授权是决定是否允许主体发出请求的过程。

无论如何,您应该做的第一件事是向服务添加身份验证和授权,从而使弹出内容(/getPopup(。获得该服务后,您实际上有多种选择:

  • 实现一些单点登录框架
  • 采用联合身份验证技术
  • 使用自定义身份验证方案转发来自调用应用程序的请求

显然,最简单的解决方案是将所有内容一起运送到一个部署单元中。

作为旁注,在本地主机上进行测试时,请注意cookie会话名称:cookie绑定到主机名,而不是主机名+端口,因此localhost:X的一个服务发出的JSESSIONID将被JSESSION ID覆盖localhost:Y