我想在我的WAR中使用JAAS進行身份驗證。我知道我的configuration file(another link)應放置在某處(如解釋here)。不幸的是,如果我們談論的是戰爭,我不知道究竟在哪裏。以及如何命名文件?將安全配置文件放置在WAR中的位置?
// JAAS has to find the file and retrieve "foo" from it
LoginContext ctx = new LoginContext("foo", this);
我想在我的WAR中使用JAAS進行身份驗證。我知道我的configuration file(another link)應放置在某處(如解釋here)。不幸的是,如果我們談論的是戰爭,我不知道究竟在哪裏。以及如何命名文件?將安全配置文件放置在WAR中的位置?
// JAAS has to find the file and retrieve "foo" from it
LoginContext ctx = new LoginContext("foo", this);
不幸的是我能得到它的工作的唯一方法是創建一個文件jass.conf
並使用指定它可以:
在Tomcat的Java參數:
-Djava.security.auth.login.config==c:\\path\\To\\file.conf
或來自Java代碼:
System.setProperty("java.security.auth.login.config","c:\\path\\To\\file.conf");
我也想知道一個更好的方式來指定配置。我想在我的WAR中打包該配置。
我有同樣的問題,我想看看如果我不能根據當前的類路徑(這將位於戰爭本身內)動態設置此屬性。
public class SecurityListener implements ServletContextListener {
public SecurityListener() {
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
if(System.getProperty("java.security.auth.login.config") == null) {
String jaasConfigFile = null;
URL jaasConfigURL = this.getClass().getClassLoader().getResource("login.conf");
if(jaasConfigURL != null) {
jaasConfigFile = jaasConfigURL.getFile();
}
System.setProperty("java.security.auth.login.config", jaasConfigFile);
}
}
}
顯然,你需要將監聽器添加到你的web.xml:
<listener>
<listener-class>example.SecurityListener</listener-class>
</listener>
這樣做是java.security.auth.login.config時的實例化設置的屬性Web應用程序,如果它尚未定義。這意味着你可以把它放到你的源文件夾中,如果沒有其他地方重新定義,它會自動加載它。我測試了這個,它可以在Tomcat 6上運行。
因此,例如,如果您的Tomcat安裝位於「C:\ program files \ tomcat6 \」中,並且您的戰爭部署在「C:\ program files \ tomcat6 \ webapps \ mywar「,它會找到的路徑是」C:\ program files \ tomcat6 \ webapp \ mywar \ WEB-INF \ classes「,它總是準確的。不知道這個解決方案是否也適用於其他Web應用程序,但我會這麼想,因爲login.conf將會是類路徑根的地方。
希望有幫助!
看起來像一個甜蜜的解決方案 – sehe 2012-07-19 09:39:56
您可以封裝罐中的client_jaas.conf,並使用代碼指定配置動態
System.setProperty("java.security.auth.login.config", XXX.class.getClassLoader().getResource("client_jaas.conf").toString());
嗯,這是一個選項。也許我們可以在WAR內的'.properties'文件的某處設置這個'java.security.auth.login.config'參數。在你的情況下,這個設置對於Tomcat中的所有應用程序都是全局的。 – yegor256 2011-03-04 07:00:58
你有沒有找到一種方法來引用放在WAR文件中的.conf文件? – yathirigan 2015-10-23 11:50:10