4

我正在构建一个将在 Tomcat 上运行的小型 Java (servlet) 身份验证 Web 应用程序。该应用程序将对用户进行身份验证,然后将用户重定向到另一个 Web 应用程序(在不同的服务器上)。问题是,在用户进行身份验证后,我需要以某种方式告诉 Apache 该会话已通过身份验证,并且 Apache 应将 http 请求重定向(使用 RewriteRules)到目标 Web 应用程序(而不是用于身份验证的应用程序)。

根据我的研究,我有 3 个选项: 1. 身份验证成功后,我重定向到一个 URL,告诉 Apache 该会话已通过身份验证(使用 RewriteRules)。我可以将此信息存储在 Cookie(问题:安全性)或 Apache 环境变量(问题:清除非活动环境变量...)中。2. 使用 apache mod 将会话存储到数据库中。验证成功后,我使用 Java 应用程序更新数据库,apache 将所有请求重定向到目标 URL(问题:数据库访问负载(最多 500 个活动并发用户))。3. HTTP 隧道。但这意味着对目标应用程序的每个请求都通过我的身份验证应用程序(问题:冗余,缓慢,......)

  1. 还有另一种方法可以做到这一点吗?
  2. 最好的方法是什么?

谢谢一堆。

4

1 回答 1

2

有几种方法可以做到这一点,

  1. 如果您负担得起企业解决方案,请选择 Oracle 身份管理/Oracle 访问管理。它将重定向到登录页面,一旦登录成功并且添加了正确的 cookie,所有未来的请求都会在内部的请求中注入一个标头。您的内部应用程序可以键入标题并确认用户已登录。要进行开发,您可以使用 Firefox ModifyHeaders 插件在没有 OIM/OAM 的情况下运行安全应用程序。

  2. 如果您买不起企业解决方案,请使用 OpenIAM,它可以做同样的事情,但规模很小,没有报告和高可用性功能。

  3. 这样做可能有三分之一,但我从未尝试过,那就是使用 Apache 的身份验证模块(或它们的组合),如http://authmemcookie.sourceforge.net/http:// httpd.apache.org/docs/trunk/mod/mod_session.html

祝你好运!

于 2013-10-20T15:56:07.990 回答