2014-10-17 38 views
4

我已經實現在Tomcat 7的簡單JAAS模塊領域配置在catalina.sh像這樣JAAS境界負載內部配置文件

JAVA_OPTS=$JAVA_OPTS "-Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config" 

指定的Jaas.conf文件時,但是它可以正常工作,我希望通過將該配置文件內部添加到Web應用程序來簡化我的應用程序。文檔指出您可以使用configFile參數

「用於此Realm的JAAS配置文件的名稱,它將使用ClassLoader#getResource(String)進行搜索,因此可以將配置綁定到一個Web應用程序,如果未指定,將使用默認的JVM全局JAAS配置。「

我在我的web應用程序的context.xml:

<Realm appName="AppLogin" className="org.apache.catalina.realm.JAASRealm" configFile="WEB-INF/jaas.config" ...../> 

配置文件位於/WEB-INF/jaas.config

爲什麼我的JAAS配置文件沒有被加載?

http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html#JAAS_Realm_-_org.apache.catalina.realm.JAASRealm

回答

3

將搜索使用ClassLoader#getResource(String)

然後你需要把JAAS配置文件中的類路徑:WEB-INF/classesWEB-INF/lib但不WEB-INF直接。

,並指定只因爲它是寫在文檔中的文件名:

configFile - 一個JAAS配置文件與此 領域使用的名稱。

+0

爲了澄清,我會將我的文件放在/ resources/lib或/ resources/classes文件夾中以使其正常工作。你的回答讓我做出正確的結論。 – Sixthpoint 2014-10-17 15:32:25

+0

不客氣。 – 2014-10-17 15:42:13

+0

@Sixthpoint - 我不知道Tomcat有資源文件夾。什麼是資源/課程的完整路徑?相對於Tomcat安裝或相對於Web上下文? – 2015-03-13 15:00:50

0

看來configFile屬性沒有在Tomcat 7中實現,即使文檔聲明它是。我檢查了org.apache.catalina.realm.JAASRealm的源代碼,並且沒有setConfigFile的方法。

當您使用具有實現沒有關聯的方法的屬性,Tomcat的報告的消息如下所示:

警告:[SetPropertiesRule] {上下文/領域}設定屬性 'CONFIGFILE' 到「JAAS。配置'沒有找到匹配的屬性。

這消息表明CONFIGFILE屬性不被識別,因此JAASRealm不知道到哪裏尋找的jaas.config。

這樣看來,爲Tomcat 7,你只能使用-Djava.security.auth.login.config = $ CATALINA_BASE/conf目錄/的jaas.config

Tomcat的8源指定的jaas.config有方法setConfigFile在org.apache.catalina.realm.JAASRealm中。我還沒有試過Tomcat 8.

+0

我用tomcat 7和confileFile屬性工作正常... – fafl 2016-11-06 18:35:35