gpt4 book ai didi

java - WAR 中的安全配置文件放在哪里?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:14 27 4
gpt4 key购买 nike

我正在尝试在我的 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 本身内部)动态设置此属性。

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>

这样做是在 Web 应用程序实例化时设置 java.security.auth.login.config 属性(如果尚未定义)。这意味着您可以将其放入源文件夹并自动加载(如果没有在其他地方重新定义的话)。我已经对此进行了测试,它适用于 Tomcat 6。

因此,例如,如果您的 tomcat 安装在“C:\program files\tomcat6\”中,而您的 war 部署在“C:\program files\tomcat6\webapps\mywar”中,它将找到的路径是“C:\program files\tomcat6\webapp\mywar\WEB-INF\classes”,它总是准确的。不确定此解决方案是否也适用于其他 Web 应用程序,但我想是这样,因为 login.conf 将位于类路径根目录所在的位置。

希望对您有所帮助!

关于java - WAR 中的安全配置文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com