2013-01-08 9 views
6

Viene citata la compatibilità con JASPI (JASPIC/JSR 196) sulla compatibilità Jetty con JASPI (JASPIC/JSR 196).Come usare JASPI/JASPIC sul Jetty?

Tuttavia, il distribution of Jetty 8 non sembra contenere tutte le classi relative al Jaspi. C'è un jar jetty-security-8.1.8.v20121106.jar in [jetty home]/lib, ma questo non contiene nessuno dei tipi JASPIC/JASPI.

La documentation about JASPIC/JASPI sulla wiki molo è solo un segnaposto e non contiene alcuna informazione.

Dopo un po 'su Google ho trovato JavaDocs on the Eclipse site e ho scoperto che ci dovrebbe essere un jetty-jaspi-8.1.8.v20121106.jarsomewhere. Quei JavaDocs sono inclusi anche nella distribuzione. Infine, a Github viene visualizzato un numero jetty-jaspi repo.

Ovviamente c'è una certa quantità di supporto disponibile, ma perché sono quelle classi apparentemente non presente nella distribuzione Jetty e dove si trova la documentazione su come configurare questo? Cosa mi manca?

risposta

8

This project (https://github.com/guofengzh/jaspi-on-jetty) è un esempio operativo dell'API JASPI nel molo che utilizza geronimo-jaspi che a sua volta richiama i moduli jetty-jaspi per l'autenticazione. Geronimo sembra fornire il meccanismo di configurazione e il molo dei moduli di autenticazione stessi in questo esempio.

Sembra come se è possibile selezionare un modulo, digerire o metodi di autenticazione di base. Un rapido test del login basato su modulo ha mostrato che sembra funzionare.

Il Jaspi fabbrica di autenticazione è impostato un molo-web.xml in questo modo:

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

E il file di configurazione Jaspi viene fatto riferimento tramite una proprietà del sistema nel file pom.xml:

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

Inoltre, la libreria jaspi che hai citato viene aggiunta come dipendenza dal pom, insieme all'implementazione di 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> 

Non sono stato in grado di trovare la documenazione sull'argomento. Sembra che il modulo jetty-jaspi non sia uno degli standard start options, ma potrebbe essere aggiunto alla directory $ {jetty.home/lib/ext} (vedere Jetty classloading).

+1

Sembra una buona risposta :) Sono ancora un po 'al buio sul perché jaspi javadocs sono nella distribuzione, ma non sul codice effettivo. Richiedere due librerie esterne rende discutibile anche l'affermazione di supportare jaspi nella pagina principale. Allo stesso modo, Tomcat potrebbe affermare di essere compatibile con JSF: | Ma, ahimè, proverò il tuo esempio;) –

+0

Mi piace molto la natura modulare del jetty, puoi abilitare solo le funzionalità necessarie e avere un runtime leggero. Prendo il tuo punto di vista sulle javadoc + la lib esterna anche se; non è chiaro dalla documentazione come il molo supporti questa funzionalità. – diffa

+3

sì, è supportato in pontile da anni ma qualcosa che personalmente sento così poco di cui non ho pensato molto in termini di abilitazione, è stato in gran parte il lavoro di un altro committer (David Jencks) di geronimo. Abbiamo bisogno di inserirlo nella nuova documentazione del docbook, però, mi piacerebbe vedere una richiesta di pull nei documenti per questo! –