关于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)。