2013-01-08 17 views
6

On Jetty的main project page与JASPI(JASPIC/JSR 196)的兼容性被提及。如何在Jetty上使用JASPI/JASPIC?

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

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

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

显然有一些可用的支持,但为什么这些类似乎不在Jetty发行版中,以及有关如何配置它的文档在哪里?我错过了什么?

回答

8

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

+1

看起来像一个很好的答案:)我仍然有点在黑暗中为什么jaspi javadocs在分布,但不是实际的代码。需要两个外部库也使得在主页上支持jaspi的声明有问题。同样,Tomcat可以声称是JSF兼容的:|但是,唉,我会尝试你的例子;) –

+0

我非常喜欢码头的模块化特性,你可以只启用你需要的功能,并有一个轻量级的运行时间。尽管如此,我对javadocs + external lib的观点仍然持怀疑态度。从文档中不清楚jetty是如何支持这个功能的。 – diffa

+3

是的,它已经在码头支持了很多年了,但是我个人听到的很少,关于我在启用方面没有多少考虑,它主要是来自geronimo的另一个提交者(David Jencks)的工作。我们需要将其纳入新的docbook文档,但愿意在文档中看到拉取请求! –