2013-04-12 28 views
6

Oceniam program Savon za korzystanie z usług sieciowych ... ale nie znajduję żadnych informacji, jeśli mogę użyć certyfikatu strony klienta SSL do uwierzytelnienia na serwerze, który udostępnia usługi sieciowe SOAP. Przeczytałem dokumentację, ale nic nie znalazłem.Czy funkcja SAVON obsługuje uwierzytelnianie poświadczeń po stronie klienta

Czy ktoś wie, czy SAVON obsługuje uwierzytelnianie poświadczeń po stronie klienta?

Pozdrowienia Fak

Odpowiedz

10

najnowsza stabilna wersja Savon (2.2.0 w tej chwili) obsługuje certyfikaty SSL klienta za pośrednictwem globalnych opcji. Proszę zapoznać się z sekcją SSL w the documentation.

Oto przykład kodu, zakładając httpclient jest używany z 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) 

Jeśli masz plik certyfikatu pfx/klucza, możesz mieć problemy z używaniem go bezpośrednio - więc warto podzielić je w oddzielne pliki - zobacz tę stronę, aby uzyskać informacje: Extract public/private key from PKCS12 file for later use in SSH-PK-Authentification

Nadzieję, że pomaga!
Daniel

+0

Wielkie dzięki, należy zdać sobie sprawę, że te opcje były przez CERT klienckich (założyli, że nie byli wymieniani jako "klient"). Zakładam, że musisz użyć httpclient, aby to zadziałało ... –

+1

Opcje HTTP w Savon w wersji 2 służą do tworzenia [HTTPI :: Request] (http://httpirb.com/#requests). Zależy więc od adaptera, czy jest to obsługiwane. – rubiii

1

Jesteśmy problemy próbuje dostać Savon klienta do pracy z uwierzytelniania klienta SSL, ale w tym samym czasie weryfikacji gospodarza obwodnicy ....

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

nie z podobnym HTTPI Żądaj GET do wir.dhswir.org (net_http) HTTPI :: SSLError: SSL_read: błąd uścisku dłoni ssl

brak informacji o mo ..

Wypróbowaliśmy Savona 2.2.0, 2.3.0 i 2.11.0. z nieznacznie zmieniającymi się komunikatami o błędach.

Używamy tego samego klucza sformatowanego w PEM i certyfikatu do Savona i do porównania przy użyciu Unix WGET. Wget powiedzie się, jeśli my nie przechodzą --no-check-certyfikat, jednak jeśli dodamy, że to przechodzi i może zrobić uwierzytelniania klienta SSL i uzyskać dostęp

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