4

在我的 Spring Boot 应用程序中,我需要调用:

System.setProperty("java.security.auth.login.config", authConf);

其中 authConf 似乎被认为是文件的绝对路径。

问题是,我的 Spring Boot 应用程序被打包并作为 jar 执行,我想将文件打包到 jar 中。

问题中提供的答案可能仅在将 WAR 部署在服务器中时才有效。当我们使用嵌入式容器运行 JAR 时,它似乎不起作用。

有没有办法我可以设置 java.security.auth.login.config 的相对路径来引用我的 jar 中打包的 conf 文件?

4

1 回答 1

0

我知道答案已经晚了大约 6 年,但我最近遇到了同样的问题并找到并回答了。也许我的回答至少会帮助下一个面临这个问题的开发者。

我能够通过首先创建一个javax.security.auth.login.Configuration类型JavaLoginConfig然后使用Configuration.setConfiguration(configuration method)相同的配置类来解决它。使用这种方法,我能够将我们jaas.conf的 jar 捆绑在一起并使用它的相对路径。

举一个具体的例子:

  1. 获取要使用的安全配置文件的 URL
    URL configLocation=YourClass.getClassLoader().getResource("resources/jaas.conf);"
  2. 创建 JavaLoginConfig 配置
    Configuration secConfig=Configuration.getInstance("JavaLoginConf", new URIParameter(configLocation.toURI());
  3. 将配置设置为您在步骤 2 中创建的配置
    Configuration.setConfiguration(secConfig);
于 2021-08-31T15:28:50.313 回答