问题 如何根据webapp定义Tomcat安全领域


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

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

一个主题提到他通过定义领域来做到这一点 META-INF/context.xml 的webapp ..但我无法让它工作(为什么Tomcat经理使用我的LoginModule?)。

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


10677
2017-12-03 11:28


起源

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


答案:


定义自己的 JDBCRealm, 创建一个 META-INF/context.xml   您自己的Web应用程序。

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

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


12
2017-12-03 11:52



Arrg!我刚看到必须在CATALINA_HOME中访问自定义域实现,而不仅仅是来自我的Web应用程序的JAR。这很糟糕。如果必须在整个Tomcat安装上部署自定义/每个Webapp Realm,我不明白能够定义它。 - Raphael Jolivet