2013-01-08 43 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文檔,但願意在文檔中看到拉取請求! –