This project (https://github.com/guofengzh/jaspi-on-jetty)是Jetty中的JASPI API的一个工作示例,该示例使用geronimo-jaspi,后者又调用回jetty-jaspi模块进行身份验证。在这个例子中,Geronimo似乎提供了配置机制和jetty认证模块本身。
看起来好像您可以选择表单,摘要或基本身份验证方法。对基于表单的登录进行快速测试表明它似乎起作用。
的Jaspi认证工厂是设置在码头-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模块不是standard start options之一,但可以添加到$ {jetty.home/lib/ext}目录(请参阅Jetty classloading)。
看起来像一个很好的答案:)我仍然有点在黑暗中为什么jaspi javadocs在分布,但不是实际的代码。需要两个外部库也使得在主页上支持jaspi的声明有问题。同样,Tomcat可以声称是JSF兼容的:|但是,唉,我会尝试你的例子;) –
我非常喜欢码头的模块化特性,你可以只启用你需要的功能,并有一个轻量级的运行时间。尽管如此,我对javadocs + external lib的观点仍然持怀疑态度。从文档中不清楚jetty是如何支持这个功能的。 – diffa
是的,它已经在码头支持了很多年了,但是我个人听到的很少,关于我在启用方面没有多少考虑,它主要是来自geronimo的另一个提交者(David Jencks)的工作。我们需要将其纳入新的docbook文档,但愿意在文档中看到拉取请求! –