2013-04-12 14 views
6

Ich beurteile Savon für die Verwendung von Webservices ... aber ich finde keine Informationen, wenn ich ein SSL-Client-seitiges Zertifikat zur Authentifizierung gegenüber dem Server verwenden kann, der die SOAP-Webdienste bereitstellt. Ich habe die Dokumentation gelesen, aber nichts darüber gefunden.Unterstützt SAVON clientseitige Zertifikatsauthentifizierung

Weiß jemand, ob SAVON clientseitige Zertifikatauthentifizierung unterstützt?

Grüße Fak

Antwort

10

die neueste stabile Version von Savon (2.2.0 in diesem Moment) unterstützt Zertifikate über globale Optionen Client-SSL. Bitte beachten Sie die SSL-Sektion in the documentation. Hier

ist einige Beispiel-Code, Httpclient unter der Annahme, mit httpi verwendet:

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) 

Wenn Sie eine pfx Zertifikat/Schlüsseldatei haben, können Sie Probleme haben, es direkt mit - so dass Sie könnte sie teilen möchten heraus in separate Dateien - siehe diese Seite für Info: Extract public/private key from PKCS12 file for later use in SSH-PK-Authentification

Hoffe, dass hilft!
Daniel

+0

Vielen Dank erhalten, erkannt haben sollte, dass diese Optionen für Client-Zertifikate waren (angenommen, sie waren nicht als "Kunde" nicht erwähnt). Ich nehme an, dass Sie httpclient verwenden müssen, damit das auch funktioniert ... –

+1

HTTP-Optionen in Savon Version 2 werden verwendet, um [HTTPI :: Request] (http://httpirb.com/#requests) zu erstellen. Es hängt also vom Adapter ab, ob dies unterstützt wird. – rubiii

1

Wir Probleme haben versucht savon Client arbeiten mit ssl Client Auth aber gleichzeitig Bypass-Host-Überprüfung zu bekommen ....

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

irgendwie Wie HTTPI GET-Anforderung an wir.dhswir.org (net_http) HTTPI :: SSLError: SSL_read: ssl-Handshake-Fehler

no moe info ..

Wir haben versucht, Savon 2.2.0, 2.3.0 und 2.11.0. mit leicht variierenden Fehlermeldungen.

Wir verwenden den gleichen PEM-formatierten Schlüssel und das gleiche Zertifikat, um zu testen und mit UNIX WGET zu vergleichen. WGET wird scheitern, wenn wir --no-Check-Zertifikat nicht passieren, aber wenn wir hinzufügen, dass es passiert und kann ssl Client Auth tun und Zugang

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