我在Tomcat 7上实现了一个带有域配置的简单JAAS模块。在catalina.sh中指定jaas.conf文件时它可以正常工作
JAVA_OPTS=$JAVA_OPTS "-Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config"
但是,我想通过在Web应用程序内部添加此配置文件来简化我的应用程序。文档说明您可以使用configFile参数
“与此Realm一起使用的JAAS配置文件的名称。将使用ClassLoader#getResource(String)搜索它,以便可以将配置捆绑在Web应用程序中。如果未指定,则默认将使用JVM全局JAAS配置。“
我的网络应用中的我的context.xml:
<Realm appName="AppLogin" className="org.apache.catalina.realm.JAASRealm" configFile="WEB-INF/jaas.config" ...../>
配置文件位于/WEB-INF/jaas.config
为什么我的jaas配置文件没有加载?
答案 0 :(得分:3)
将使用
进行搜索ClassLoader#getResource(String)
然后,您需要将JAAS配置文件直接放在类路径中:WEB-INF/classes
或WEB-INF/lib
,而不是WEB-INF
。
并仅指定文档中的文件名:
configFile
- 要与此配合使用的JAAS配置文件的名称 领域
答案 1 :(得分:0)
似乎在Tomcat 7中没有实现configFile属性,即使文档声明它是。我检查了org.apache.catalina.realm.JAASRealm的源代码,没有setConfigFile的方法。
当您使用未实现关联方法的属性时,Tomcat会报告如下消息:
警告:[SetPropertiesRule] {Context / Realm}设置属性 'configFile'到'jaas.config'找不到匹配的属性。
该消息表明无法识别 configFile 属性,因此JAASRealm将不知道在哪里查找jaas.config。
因此,对于Tomcat 7,您只能使用-Djava.security.auth.login.config = $ CATALINA_BASE / conf / jaas.config指定jaas.config
Tomcat 8 source在org.apache.catalina.realm.JAASRealm中有setConfigFile的方法。我没有尝试过Tomcat 8。