sviluppatori@openspcoop.org
<prev [Datenext>
<prev [Threadnext>

[OpenSPCoop-Dev] Studio preliminare inte

To: <sviluppatori@openspcoop.org>
Subject: [OpenSPCoop-Dev] Studio preliminare integrazione SAML in OpenSPCoop
From: "Montebove Luciano" <L.Montebove@finsiel.it>
Date: Tue, 25 Jul 2006 19:10:48 +0200
List-archive: </pipermail/sviluppatori>
List-help: <mailto:sviluppatori-request@openspcoop.org?subject=help>
List-id: sviluppatori.openspcoop.org
List-post: <mailto:sviluppatori@openspcoop.org>
List-subscribe: <http://www.openspcoop.org/mailman/listinfo/sviluppatori>,<mailto:sviluppatori-request@openspcoop.org?subject=subscribe>
List-unsubscribe: <http://www.openspcoop.org/mailman/listinfo/sviluppatori>,<mailto:sviluppatori-request@openspcoop.org?subject=unsubscribe>
Reply-to: sviluppatori@openspcoop.org
Thread-index: AcaJaS8dzg4CwSJZSnWOaB30hlmeBAADSgpACaToZyA=
Thread-topic: Studio preliminare integrazione SAML in OpenSPCoop
 Ciao a tutti,

Ho analizzato il supporto per SAML offerto dalla versione attuale di 
WSS4J:1.5.0:
Questi i primi risultati:
-Prima limitazione è il fatto che utilizza la versione 1.1 della specifica 
SAML, a causa dell'utilizzo della libreria OpenSAML che non supporta ancora 
SAML 2.0 (è uscita da pochi giorni una versione "Technology Preview" di 
OpenSAML 2 da considerarsi ancora una "alpha").
Allo stato attuale è da escludere una implementazione di SAML 2.0,visto lo 
stato incompleto di OpenSAML 2 ed il fatto che l'interfaccia di programmazione 
è stata completamente riscritta e non ancora sufficientemente documentata. 
Richiederebbe inoltre la modifica di oltre 10 classi in WSS4J che dipendono da 
OpenSAML.

-Altro problema è che l'implementazione in WSSS4J è solo un esempio che 
permette di creare asserzioni del tipo Authentication prendendo le credenziali 
da File.
Sembra fattibile comunque lo sviluppo di un modulo che sostituisca 
l'implementazione di esempio org.apache.ws.security.saml.SAMLIssuerImpl con una 
che permetta la creazione dinamica di asserzioni di autenticazione e/o 
attributi conformi a SAML 1.1.
Per sperimentarne la effettiva fattibilità ho realizzato una classe che invece 
di implementare la creazione di una asserzione di autenticazione ne crea una 
con un attributo scolpito nel codice (allegata).

-Facendo qualche test ho riscontrato la presenza di un bug che permette la 
firma del solo body quando si inserisce una asserzione SAML.
Andando nel codice sorgente ho proposto una patch di wss4j che sembra risolvere 
questo problema: http://issues.apache.org/jira/browse/WSS-50. (allegata una 
versione con questa modifica di wss4j che però utilizza OpenSAML 1.1 invece di 
OpenSAML 1.0.1 come di default in Axis 1.5.0)

-E' stato rilevato anche un altro problema relativo a come Axis serializza i 
messaggi SOAP contenenti le firme digitali e che potrebbe creare problemi di 
interoperabilità, ma di cui al momento non vedo soluzioni:
http://mail-archives.apache.org/mod_mbox/ws-wss4j-dev/200607.mbox/ajax/%3c5E0CFF197F04F04882BF85F72B0A667C8EF85E@POSTA01.itmaster.local%3e

Se volete provare questa "proof of concept" di SAML e OpenSPCoop oltre alla 
nuova classe dovete inserire le due librerie in deploy/pdd/required_libs e 
saml3.properties in deploy/pdd/properties/crypto modificando il build.xml come 
in allegato e configurando come segue i servizi:

PORTA DELEGATA
<request-flow>
             <parameter nome="action"
                          valore="Timestamp SAMLTokenSigned"/>
             <parameter nome="samlPropFile" valore="saml3.properties"/>
             <parameter nome="signatureKeyIdentifier"
                          valore="DirectReference"/>
             <parameter nome="user" valore="portadelegata"/>
             <parameter nome="passwordCallbackClass"
                         valore="org.openspcoop.wssecurity.PWCallbackSend"/>
             <parameter nome="signaturePropFile"
                         valore="pd-crypto.properties"/>
             <parameter nome="timeToLive" valore="600"/>
             <parameter nome="mustUnderstand" valore="true"/>
             <parameter nome="signatureParts"
                 
valore="{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body;
             
{Content}{http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/}Intestazione;
                 
{Content}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;"/>
</request-flow>


PORTA APPLICATIVA
<request-flow>
      <parameter nome="action" valore="Timestamp Signature SAMLTokenUnsigned"/>
      <parameter nome="signaturePropFile"
                 valore="pa-crypto.properties"/>
      <parameter nome="actionOrderCheck" valore="false"/>
      <parameter nome="mustUnderstand" valore="true"/>
      <parameter nome="authorizationClass"
             valore="org.openspcoop.wssecurity.AuthorizationOKDemo"/>
      <parameter nome="decryptionPropFile"
                valore="pa-crypto.properties"/>
      <parameter nome="passwordCallbackClass"
             valore="org.openspcoop.wssecurity.PWCallbackSend"/>
      <parameter nome="signatureKeyIdentifier"
                    valore="DirectReference"/>
</request-flow>

Resta ora da ragionare insieme come passare dinamicamente le informazioni per 
costruire le asserzioni alla porta delegata (un header SOAP proprietario?) e 
come utilizzarle lato porta applicativa e se e come passarle alla applicazione 
che la implementa.

Ciao

Luciano

Attachment: SAMLAttributeIssuerImpl.java
Description: SAMLAttributeIssuerImpl.java

Attachment: saml3.properties
Description: saml3.properties

Attachment: opensaml-1.1.jar
Description: opensaml-1.1.jar

Attachment: wss4j-1.5.0.jar
Description: wss4j-1.5.0.jar

Attachment: build.xml
Description: build.xml

<Prev in Thread] Current Thread [Next in Thread>
  • [OpenSPCoop-Dev] Studio preliminare integrazione SAML in OpenSPCoop, Montebove Luciano <=
Previous by Date:  R: R: [OpenSPCoop-Dev] Rimozione header WSSecurity, Montebove Luciano
Next by Date:  [OpenSPCoop-Dev] Re: [OpenSPCoop] Problemi con la versione 0.8b1, Andrea Poli
Previous by Thread:  R: R: [OpenSPCoop-Dev] Rimozione header WSSecurity, Montebove Luciano
Next by Thread:  [OpenSPCoop-Dev] Re: [OpenSPCoop] Problemi con la versione 0.8b1, Andrea Poli
Indexes:  [Date] [Thread]