In Savon con l'autenticazione wsse, il mio nonce gettone viene riutilizzato durante le richieste successive
Domanda
Forse sto solo che non la scrittura di codice idiomatico per savon, quindi non esitate a raddrizzare me out, ma stavo cercando di fare richieste multiple sullo stesso client, come dimostrato in
client=Savon::Client.new {
wsdl.document=wsdl_path
}
r1=client.request(:company_get_report_suites) do
wsse.credentials APP_CONFIG['omniture']['username'],APP_CONFIG['omniture']['shared_secret'],:digest
end
r2=client.request(:scheduling_get_reports_run_history) do
wsse.credentials APP_CONFIG['omniture']['username'],APP_CONFIG['omniture']['shared_secret'],:digest
end
La seconda richiesta finisce per riutilizzare il nonce. Il punto del nonce wsse è quello di utilizzare una sola volta, quindi il servizio sto chiamando lamenta che ho riutilizzato e rifiuta di servire la richiesta. Il mio primo pensiero è stato quello di aggiungere un timestamp, ma che non ha aiutato; infatti, il codice sorgente mostra il nonce è utilizzato se impostato, e generati solo se non precedentemente impostato.
Ovviamente, se devo, posso creare un nuovo cliente, ma che è un'operazione piuttosto pesante e sembra improbabile che sia il modo normale per creare più richieste al largo dello stesso cliente.
C'è una soluzione ragionevole?
Soluzione
This makes me feel dirty, but if no one can suggest a better alternative, this does the trick:
class Savon::WSSE
def reset_nonce
@nonce=nil
@nonce=nonce
end
end
r1=client.request(:company_get_report_suites) do
wsse.reset_nonce
end