In Savon con l'autenticazione wsse, il mio nonce gettone viene riutilizzato durante le richieste successive

StackOverflow https://stackoverflow.com/questions/4823478

  •  26-10-2019
  •  | 
  •  

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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top