2013-04-12 11 views
6

Sto valutando savon per il consumo di servizi Web ... ma non trovo alcuna informazione se posso utilizzare un certificato lato client SSL per l'autenticazione con il server che fornisce i servizi web SOAP. Ho letto la documentazione ma non ho trovato nulla a riguardo.SAVON supporta l'autenticazione dei certificati lato client

Qualcuno sa se SAVON supporta l'autenticazione del certificato lato client?

saluti Fak

risposta

10

l'ultima versione stabile di Savon (2.2.0 in questo momento) supporta i certificati client SSL tramite le opzioni globali. Si prega di fare riferimento alla sezione SSL in the documentation.

Ecco qualche esempio di codice, assumendo httpclient viene utilizzato con httpi:

savonConfig = { 
    :namespace => "http://...com", 
    :endpoint => 'https://...:557/x/b/c', 
    #:wsdl => 'https://...:557/x/b/c?wsdl', 
    :log_level => :debug, 
    :log => true, 
    :ssl_verify_mode => :none, 
    :ssl_cert_file => 'publicCert.pem', 
    :ssl_cert_key_file => 'privateKey.pem', 
    :ssl_cert_key_password => '1234', 
    :open_timeout => 600, 
    :read_timeout => 600 
} 

client = Savon.client savonConfig 

soapBody = { 
... 
} 


calcResponse = client.call(:charge, :message => soapBody) 

Se si dispone di un file/chiave del certificato PFX, si possono avere problemi ad usarlo direttamente - così si potrebbe desiderare di dividere fuori in file separati - vedi questa pagina per informazioni: Extract public/private key from PKCS12 file for later use in SSH-PK-Authentification

Sperare che aiuti!
Daniel

+0

Molte grazie, dovrebbe aver capito che queste opzioni erano per certs client (supponendo che non erano come "cliente" non è stato menzionato). Presumo che tu debba utilizzare httpclient perché funzioni troppo ... –

+1

Le opzioni HTTP in Savon versione 2 sono usate per creare [HTTPI :: Request] (http://httpirb.com/#requests). Quindi dipende dall'adattatore se questo è supportato. – rubiii

1

Stiamo avendo problemi cercando di ottenere cliente savon di lavorare con autenticazione client SSL, ma allo stesso tempo di verifica ospite di bypass ....

https://github.com/savonrb/savon/issues/679

client = Savon.client(log_level: :debug, 
log: true, 
ssl_verify_mode: :none, 
ssl_cert_file: (Rails.root + 'signed.cer').to_s, 
ssl_cert_key_file: ('private.key').to_s, 
wsdl: "https://example.com/Service?wsdl", 
endpoint: "https://example.com/Service") 

fallisce con Come HTTPI GET request a wir.dhswir.org (net_http) HTTPI :: SSLError: SSL_read: ssl handshake failure

no info moe ..

Abbiamo provato savon 2.2.0, 2.3.0 e 2.11.0. con messaggi di errore leggermente variabili.

Stiamo utilizzando la stessa chiave PEM formattata e cert su savon e utilizzando unix WGET per il confronto. WGET fallirà se noi non passare --no-check-certificato, se aggiungiamo che passa e possiamo fare autenticazione client SSL e accedi

wget 'https://example.com/CDC/VaccinationService?wsdl' --certificate=example-int-wi-signed.cer --private-key=private.key -O- --no-check-certificate