WSSE認証を使用したSavonでは、私のNonCeトークンはその後のリクエストで再利用されます
質問
たぶん私はSavonの慣用的なコードを書いていないので、私をまっすぐにしてください。
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
2番目の要求は、NonCeを再利用することになります。 WSSE Nonceのポイントは1回だけ使用することです。そのため、私が呼んでいるサービスは、私がそれを再利用し、リクエストのサービスを拒否していると不満を述べています。私の最初の考えはタイムスタンプを追加することでしたが、それは助けにはなりませんでした。実際、ソースコードは、設定されていない場合にNonCEが使用され、以前に設定されていない場合にのみ生成されることを示しています。
明らかに、必要に応じて新しいクライアントを作成できますが、それはかなり重い操作であり、同じクライアントから複数のリクエストを作成する通常の方法ではないようです。
賢明な回避策はありますか?
解決
これは私に汚いと感じさせますが、誰もより良い代替案を提案できないなら、これはトリックを行います:
class Savon::WSSE
def reset_nonce
@nonce=nil
@nonce=nonce
end
end
r1=client.request(:company_get_report_suites) do
wsse.reset_nonce
end
所属していません StackOverflow