lai2010@link.it
<prev [Date] next>
<prev [Thread] next>

Re: [Lai2010] Ancora problemi con WS-Sec

To: lai2010 <lai2010@link.it>
Subject: Re: [Lai2010] Ancora problemi con WS-Security
From: Lorenzo Nardi <nardi80@gmail.com>
Date: Wed, 19 Jan 2011 12:17:43 +0100
Delivered-to: lai2010@servizi.link.it
In-reply-to: <20110119003254.mbxuw5p9ai04oo8s@webmail.cli.di.unipi.it>
List-archive: <http://www.link.it/pipermail/lai2010>
List-help: <mailto:lai2010-request@link.it?subject=help>
List-id: Laboratorio Applicazioni Internet - Università di Pisa <lai2010.link.it>
List-post: <mailto:lai2010@link.it>
List-subscribe: <https://www.link.it/mailman/listinfo/lai2010>, <mailto:lai2010-request@link.it?subject=subscribe>
List-unsubscribe: <https://www.link.it/mailman/listinfo/lai2010>, <mailto:lai2010-request@link.it?subject=unsubscribe>
References: <20110113213255.y8bpyszopa5w80k8@webmail.cli.di.unipi.it> <1295012286.2226.135.camel@nardi-ws.sede-pisa.link.it> <20110116144747.w24pvrc8jog0o08k@webmail.cli.di.unipi.it> <1295258197.2226.186.camel@nardi-ws.sede-pisa.link.it> <20110119003254.mbxuw5p9ai04oo8s@webmail.cli.di.unipi.it>
Reply-to: nardi80@gmail.com
Il giorno mer, 19/01/2011 alle 00.32 +0100, bensi@cli.di.unipi.it ha
scritto:
> Salve,
> 
> sono riuscita a sistemare Tomcat (ristallando tutto) per aprire un 
> connettore SSL e adesso non ho più l'errore: 
> "org.apache.ws.security.components.crypto.Merlin cannot create 
> instance".
> 
> Non riesco comunque a scambiare messaggi cifrati dal client al web 
> service, passando anche per il proxy.

Se hai configurato correttamente Tomcat (puoi verificare invocando via
browser su https la pagina di benvenuto), nel client devi solo cambiare
l'endpoint di destinazione (protocollo e porta) ed aggiungere le giuste
opzioni alla JVM come indicato nell'esercitazione sulla sicurezza.

> Ho deciso di implementare solo la cifratura dei messaggi, come da 
> esercitazione "WS-Security". Quindi ho seguito fedelmente quanto 
> spiegato nell'esercitazione, ma il messaggio di richiesta non viene 
> correttamente elaborato e mi viene restituito il seguente errore:
> 
> "InvalidSecurity An error was discovered processing the <wsse:Security> 
> header"
> 
> Il messaggio ricevuto dal client come risposta è:

L'errore viene sollevato dal Web Service, quindi sarebbe interessante il
messaggio di richiesta ed il log dell'Application Server

> [....]
> La classe security.PasswordCallback ha il seguente metodo:
> 
> public class PasswordCallback implements CallbackHandler {
> 
>      public void handle(Callback[] callbacks) throws IOException,
>      UnsupportedCallbackException {
>       System.out.println("Recupero della password");
>       for (int i = 0; i < callbacks.length; i++) {
>              WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
>              //Recupero l'alias del certificato per cui si richiede la 
> password
>              String alias = pc.getIdentifier();
>              if(alias.equals("client")){
>               if(!(pc.getPassword().equals("clientpass")))
>                       throw new SecurityException("Password non
>                                                            riconosciuta");
>              }
>          }
> 
>      }

Questa implementazione di password callback si usa in caso di
Autorizzazione/Autenticazione con Password in chiaro (come scritto nella
documentazione di CXF).... dovresti usarne una di questo tipo dove
imposti la password necessaria alla lettura della chiave privata:

public class PasswordCallback implements CallbackHandler {

    public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
        for (int i = 0; i < callbacks.length; i++) {
            WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];

            if(pc.getIdentifer().equals("username")             
                    pc.setPassword("password");

            return;
        }
    }
}


> La ringrazio, cordiali saluti,
> 
> Lisa Bensi

Ciao,
Lorenzo.

> 
> Quoting Lorenzo Nardi <nardi80@gmail.com>:
> 
> > Il giorno dom, 16/01/2011 alle 14.47 +0100, bensi@cli.di.unipi.it ha
> > scritto:
> >> Quoting Lorenzo Nardi <nardi80@gmail.com>:
> >>
> >> >> Per adesso ho creato i certificati e configurato cxf, poi ho provato a
> >> >> inviare il messaggio con l'username token (con il password callback per
> >> >> ora implementato in modo banale), però quando provo ad inviare il
> >> >> messaggio al web service mi viene ritornato un messaggio di errore:
> >> >>
> >> >> "org.apache.ws.security.components.crypto.Merlin cannot create instance"
> >> >
> >> > E' uno strano errore. Hai gia' provato ad eseguire l'esercitazione WSS
> >> > nel tuo ambiente per capire se e' un problema di configurazione del
> >> > sistema o di implementazione?
> >> >
> >>
> >> Guardando i file di log, l'errore sembra essere che non trova il
> >> certificato del proxy durante il caricamento. Inoltre ho configurato il
> >> file di tomcat "server.xml" per aprire il connettore SSL come scritto
> >> nell'esercitazione WS-Security, cioè:
> >>
> >>   <Connector
> >>      port="8443"  scheme="https" secure="true"
> >>      clientAuth="false" sslProtocol="TLS"
> >>      maxHttpHeaderSize="8192"
> >>      maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
> >>      enableLookups="false" disableUploadTimeout="true"
> >>      acceptCount="100" SSLEnabled="true"
> >>      keystoreFile="proxy.jks" keystorePass="proxypass"/>
> >>
> >> con il file "proxy.jks" posto nella stessa cartella del file "server.xml".
> >> In fase di startup però ho i seguenti errori nel file di log di catalina:
> >>
> >> [.........]
> >>
> >> Come mai nel file "server.xml" non mi vengono riconosciute quelle
> >> proprietà? E' un problema di tomcat o ho sbagliato a scrivere qualcosa
> >> nel file?
> >
> > Il path relativo di Tomcat e' $CATALINA_BASE/bin/ (non conosco la tua
> > versione di Tomcat, ma ipotizzo che sia sempre lo stesso path) quindi e'
> > li che dovresti mettere il proxy.jks, oppure impostare il path assoluto
> > del keystore nella configurazione.
> >
> >
> >
> >
> > Questo non ha niente a che vedere con il WS-Security o con CXF, ma serve
> > all'abilitazione di un connettore HTTPS in Tomcat. Le due cose sono
> > distinte anche se entrambe hanno a che vedere con la sicurezza delle
> > comunicazioni.
> >
> > Solo per scrupolo, riassumo:
> >
> > HTTP over SSL (HTTPS): abilita una comunicazione cifrata punto a punto a
> > livello di applicazione.
> >
> > WSS : Abilita una comunicazione sicura end to end a livello di
> > messaggio.
> >
> > Le due tecniche sono usabili anche contemporaneamente, ma quando
> > possibile se ne usa una sola.
> >
> > Trovi qualche informazione in piu' nella dispensa:
> > http://www.link.it/isi/jsp/index.jsp?sel=doc-file&guida=Dispensa&rel=1.0&id=ar01s05.html
> >
> >>
> >> Grazie in anticipo, saluti,
> >>
> >> Lisa Bensi
> >
> > Ciao,
> > Lorenzo
> >
> >>
> >> ----------------------------------------------------------------
> >> This message was sent using IMP, the Internet Messaging Program.
> >>
> >>
> >
> >
> > _______________________________________________
> > lai2010 mailing list
> > lai2010@link.it
> > https://www.link.it/mailman/listinfo/lai2010
> >
> 
> 
> 
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
> 
> 


<Prev in Thread] Current Thread [Next in Thread>
Previous by Date:  Re: [Lai2010] Problemi e dubbi su WS-Security, Lorenzo Nardi
Previous by Thread:  Re: [Lai2010] Problemi e dubbi su WS-Security, Lorenzo Nardi
Indexes:  [Date] [Thread]