如何使用jetty-maven插件10指定JAAS配置文件



我正试图在开发环境中使用jetty-maven-plugin。然而,我正在努力让JAAS正确地获取登录模块配置文件。

以下是我的pom.xml的摘录(我留下了评论部分,以显示我尝试过的变体(:

<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>10.0.2</version>
<configuration>
<webApp>
<contextPath>/${project.build.finalName}</contextPath>
</webApp>
<contextXml>${project.basedir}/jetty-context.xml</contextXml>
<stopKey>CTRL+C</stopKey>
<stopPort>8999</stopPort>
<scanIntervalSeconds>10</scanIntervalSeconds>
<scanTargets>
<scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
</scanTargets>
<!-- <systemProperties>
<systemProperty>
<name>jetty.jaas.login.conf</name>
<value>${project.basedir}/jaas.conf</value>
</systemProperty>
<systemProperty>
<name>java.security.auth.login.config</name>
<value>${project.basedir}/jaas.conf</value>
</systemProperty>
</systemProperties> -->
<jettyProperties>
<jettyProperty>
<name>jetty.jaas.login.conf</name>
<value>${project.basedir}/jaas.conf</value>
</jettyProperty>
</jettyProperties>
</configuration>

但是,当使用mvn jetty:run运行时,它不会尝试加载jaas.conf文件。我已经使用strace:确认了这一点

$ strace -f mvn jetty:run 2>&1 | grep -i '.conf'
...snip...
[pid 24242] openat(AT_FDCWD, "/etc/host.conf", O_RDONLY|O_CLOEXEC) = 165
[pid 24242] openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 165
[pid 24270] stat("/home/myuser/.java.login.config",  <unfinished ...>

当未设置java.security.auth.login.config系统属性时,它尝试读取~/.java.login.config文件的最后一行是ConfigFile中记录的标准行为。

我可以在命令行上明确设置,但这不是一个理想的解决方案:

mvn jetty:run -Djava.security.auth.login.config=jaas.conf

正确的配置方式是什么?

如果它对任何人都有用,解决方案是systemProperties应该指定如下:

<systemProperties>
<java.security.auth.login.config>${project.basedir}/jaas.conf</java.security.auth.login.config>
</systemProperties>

最新更新