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

Posted

技术标签:

【中文标题】如何使用 jetty-maven-plugin 10 指定 JAAS 配置文件【英文标题】:How to specify JAAS config file with jetty-maven-plugin 10 【发布时间】:2021-07-03 05:00:48 【问题描述】:

我正在尝试在开发环境中使用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

正确的配置方法是什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何使用 jetty-maven-plugin 10 指定 JAAS 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥有人会使用 jetty-maven-plugin 与嵌入式码头

使用 jetty-maven-plugin 运行 Jetty,并在 jetty 运行时完成构建

jetty-maven-plugin 源代码存储库

jetty-maven-plugin

Maven: clean jetty:run报如下错,请问是啥问题?

idea启动dubbo