JAVA - 跨应用程序身份验证

时间:2014-12-08 10:49:15

标签: java javascript tomcat authentication



我有不同的运行在tomcat上的java web应用程序作为不同的模块和一个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映射。

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

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

提前感谢您的意见。 :)

1 个答案:

答案 0 :(得分:0)

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

无论如何,您应该做的第一件事是向服务添加身份验证和授权,以生成弹出内容(/getPopup)。一旦您获得了该服务,您实际上有许多选择:

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

显然,最简单的解决方案是将所有内容整合在一个部署单元中。

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