簡體   English   中英

JAAS Realm加載內部配置文件

[英]JAAS Realm load internal config file

我在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配置將被使用。“

我的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

它將使用ClassLoader#getResource(String)進行搜索

然后,您需要將JAAS配置文件放在類路徑中: WEB-INF/classesWEB-INF/lib而不是WEB-INF

並且只指定文檔中寫入的文件名:

configFile - 與此Realm一起使用的JAAS配置文件的名稱。

似乎在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源代碼在org.apache.catalina.realm.JAASRealm中有setConfigFile的方法。 我沒有嘗試過Tomcat 8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM