如何在Jetty上使用JASPI/JASPIC?

6

在Jetty的主项目页面中提到了与JASPI(JASPIC/JSR 196)的兼容性。

然而,Jetty 8的发行版似乎没有包含任何与JASPI相关的类。[jetty home]/lib中有一个jetty-security-8.1.8.v20121106.jar jar文件,但这个文件不包含任何JASPIC/JASPI类型。

关于JASPIC/JASPI的文档在Jetty维基上只是一个占位符,不包含任何信息。

在进行一些谷歌搜索之后,我发现Eclipse 网站上的 JavaDocs并且发现 jetty-jaspi-8.1.8.v20121106.jar应该某处存在。这些 JavaDocs 也包含在 Jetty 分发中。最后,在 Github 上出现了一个 jetty-jaspi 存储库

很明显有一定数量的支持可用,但为什么这些类似乎不在 Jetty 分发中,以及如何配置的文档在哪里?我错过了些什么?

1个回答

8

这个项目(https://github.com/guofengzh/jaspi-on-jetty)是在jetty中使用geronimo-jaspi调用回jetty-jaspi模块进行身份验证的JASPI API的一个工作示例。在此示例中,Geronimo似乎提供了配置机制,而Jetty则提供了身份验证模块。

似乎可以选择表单、摘要或基本身份验证方法。对表单登录的快速测试显示它似乎能够正常运行。

Jaspi身份验证工厂在jetty-web.xml中设置如下:

<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>

jaspi配置文件通过pom.xml文件中的系统属性进行引用:

<systemProperty>
  <name>org.apache.geronimo.jaspic.configurationFile</name>
  <value>./conf/jaspi/form-test-jaspi-2.xml</value>
</systemProperty>

此外,您提到的jaspi库已作为依赖项添加到pom中,以及geronimo jaspi实现。

<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模块不是标准启动选项之一,但可以添加到${jetty.home/lib/ext}目录中(请参见Jetty类加载)。


1
看起來是個不錯的答案 :) 對於為什麼jaspi javadocs在發行版中,但實際代碼不在,我還有點模糊。需要兩個外部庫也使得宣稱支持jaspi的主頁變得可疑。同樣,Tomcat也可以聲稱是JSF兼容的:| 但是,無論如何,我會嘗試你的例子 ;) - Arjan Tijms
我非常喜欢Jetty的模块化特性,你可以启用你需要的功能并拥有轻量级运行时。不过,我理解你提到的javadocs和外部库的问题;从文档中并不清楚Jetty如何支持这个特性。 - diffa
3
是的,Jetty 多年来一直支持它,但是我个人很少听到它的消息,所以我没有考虑过启用它,这在很大程度上是由于 Geronimo 的另一位贡献者 David Jencks 的工作。不过我们需要在新的 Docbook 文档中加入它,希望能看到相关文档的拉取请求! - jesse mcconnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接