【问题标题】:How to define Tomcat security Realms per webapp如何为每个 webapp 定义 Tomcat 安全领域
【发布时间】:2011-05-19 16:57:19
【问题描述】:

在 Tomcat 中使用 JAAS JDBCRealms 时,我通常在 server.xml 中定义领域。但是现在我正在寻找一个更简单的解决方案,我在部署应用程序时不必配置 Tomcat 容器。

如果可能,我想将所有 JAAS 配置保留在 web.xml 中,并且只定义每个应用程序/webapp 的领域。

一个线程提到他通过在 webapp 的 META-INF/context.xml 中定义领域来做到这一点。但我无法让它工作 (Why is Tomcat manager using my LoginModule?)。

请帮我在 .war 中找到正确的位置来定义一个 org.apache.catalina.realm.JDBCRealm,然后用于该 webapp。

【问题讨论】:

  • 也许我找到了解决方案:仅当 $CATALINA_BASE/conf/[enginename]/[hostname]/ 中的应用程序的上下文文件不存在时,在 /META-INF 的单个文件中/context.xml 在应用程序文件中。如果 Web 应用程序被打包为 WAR,那么 /META-INF/context.xml 将被复制到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 并重命名以匹配应用程序的上下文路径。此文件一旦存在,如果将具有较新 /META-INF/context.xml 的新 WAR 放置在主机的 appBase 中,它将不会被替换。来自tomcat.apache.org/tomcat-6.0-doc/config/context.html

标签: java tomcat jaas


【解决方案1】:

要定义您自己的JDBCRealm,请在您自己的网络应用程序中创建一个META-INF/context.xml

根据您的 Tomcat 服务器版本的规范配置您的 JDBCRealm:

这些链接向您展示了如何配置 JDBCRealm。

【讨论】:

  • 啊!我刚刚看到必须可以在 CATALINA_HOME 中访问自定义领域实现,而不仅仅是从我的 Web 应用程序的 JAR 中访问。这很糟糕。如果必须将其部署在整个 Tomcat 安装中,我不明白能够定义自定义 / 每个 Webapp 领域的意义。
猜你喜欢
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
相关资源
最近更新 更多