关于Jetty的main project page与JASPI(JASPIC/JSR 196)的兼容性。

但是,distribution of Jetty 8似乎不包含与JASPI相关的任何类。 [jetty home]/lib中有一个jetty-security-8.1.8.v20121106.jar jar,但是这个不包含任何JASPIC/JASPI类型。

Jetty Wiki上的documentation about JASPIC/JASPI只是一个占位符,不包含任何信息。

经过一番谷歌搜索后,我发现JavaDocs on the Eclipse site并发现应该有一个jetty-jaspi-8.1.8.v20121106.jar somewhere。这些JavaDocs也包括在发行版中。最后,jetty-jaspi repo出现在Github上。

显然有一定数量的支持,但是为什么这些类在Jetty发行版中似乎不存在,以及有关如何配置它的文档在哪里?我想念什么?

最佳答案

This project (https://github.com/guofengzh/jaspi-on-jetty)是jetty中JASPI API的一个工作示例,该示例使用geronimo-jaspi依次调用jetty-jaspi模块进行身份验证。在此示例中,Geronimo似乎提供了配置机制并取消了身份验证模块本身。

似乎您可以选择一种表单,摘要或基本身份验证方法。对基于表单的登录进行的快速测试表明它似乎可以正常工作。

可以在jetty-web.xml中设置Jaspi身份验证工厂,如下所示:

<Set name="securityHandler">
  <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
    <Set name="loginService">
      <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
        <Set name="name">JAASRealm</Set>
        <Set name="loginModuleName">jaas</Set>
      </New>
    </Set>

    <Set name="authenticatorFactory">
      <New class="org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory" />
    </Set>
  </New>
</Set>

并通过pom.xml文件中的系统属性来引用jaspi配置文件:
<systemProperty>
  <name>org.apache.geronimo.jaspic.configurationFile</name>
  <value>./conf/jaspi/form-test-jaspi-2.xml</value>
</systemProperty>

另外,您提到的jaspi库与geronimo jaspi实现一起添加为pom中的依赖项:
<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-jaspi</artifactId>
  <version>${jetty.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.geronimo.components</groupId>
  <artifactId>geronimo-jaspi</artifactId>
  <version>2.0.0</version>
</dependency>

我也一直找不到有关该主题的文档。似乎jetty-jaspi模块不是standard start options之一,但是可以添加到$ {jetty.home/lib/ext}目录中(请参阅Jetty classloading)。

09-12 19:34