問題タブ [wss4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - WCF クライアント例外 - 「メッセージ セキュリティの検証に失敗しました。署名の検証に失敗しました」 - どうすればさらにデバッグできますか?
私の WCF クライアントが Java ベースの Spring Web Services サーバーを呼び出して応答を受け取ると、次の例外が発生します -
内部例外 - 署名の検証に失敗しました。
Java ベースのサーバー Web サービスは私の要求を正常に処理しているようですが、応答で上記の問題が発生しています。注: サーバー側にはアクセスできません。変更を要求したりアクションを照会したりできますが、それだけです。
セットアップ
- WCF .NET 3.5 クライアント Web サービス
- Java Spring Web Services 2.1.0 (SOAP プロトコル実装) + Apache WSS4J 1.6.7 (WS-Security 1.1 実装) サーバー
- config の次のセキュリティ バインディング:
バインディングはコードで次のように変更されています
私ができないように見えるのは次のとおりです。
どの署名が失敗したかを把握しますか? 内部例外のスタック トレースに記載されている
System.ServiceModel.Security.ReceiveSecurityHeader.ProcessPrimarySignature
ので、プライマリ シグネチャがメイン エンベロープ ボディ シグネチャであると推測しましたか? ただし、これと矛盾するのは、System.ServiceModel.Security.MessageSecurityProtocol.ProcessSecurityHeader
それがヘッダー要素であると私に思わせる StackTrace の行ですが、どの行ですか?コンソールアプリケーションまたは
System.Security.Cryptography.Xml.SignedXml
クラスを使用して同様のもので署名をチェックし、別の分離された環境でどの署名がfalseを返しているかを確認しますCheckSignature()
-これを試してみましたが、WCFからのリクエストの要素に対してtrueを返すようには見えません(私はフィドラーからリクエストを引き出しました)
ありとあらゆる助けに感謝
java - WSS4J と Apache Axis が機能しない
Axis Web サービスで WSS4J を使用しようとしましたが、何も起こりません。WSS4J はまったく使われていないようです。必要なライブラリはすべて WEB-INF/lib ディレクトリにあります。サービスは org.apache.axis.client.AdminClient ユーティリティでデプロイされています。
ここに私の deploy.wsdd があります:
haha
クラスがなくてもエラーは発生しません( passwordCallbackClass
deploy.wsdd のパラメーターを参照)。WSS ヘッダーなしで SOAP 要求をサービスに自由に送信できます。
アップデート
クラスパスの問題をいくつか解決しました。http://localhost:8080/axis/servlet/AxisServlet
ページを開こうとすると、次のエラーが表示されますorg.apache.axis.ConfigurationException: java.lang.ClassNotFoundException: org.apache.ws.axis.security.WSDoAllSender
。WSS4J jar は {tomcat}\webapps\axis\WEB-INF\lib ディレクトリにあります。私が間違っていることは何ですか?
更新 #2
nither wsdl4j
jarにはorg.apache.ws.axis.security.WSDoAllSender
クラスもwss4j
jarも含まれていないようです。ただし、このクラスはバージョン 1.5.xのwss4j
jar に含まれていました。今は行方不明です。WSS4J のドキュメントは古くなっています。
java - Web サービスを 2 回呼び出すと、wss4j と soaphandler のエラーが発生する
wss4j を使用してサーバー上の SOAP 要求のセキュリティを検証しているときに問題が発生しました。これは、SOAP 要求のセキュリティ ヘッダーを検証するために使用するコードの一部です (SOAPHandler の handleMessage メソッドにいます)。実装) :
要求には署名とタイムスタンプがあります。最初に Web サービスを呼び出すと、すべてが正常に行われ、要求が処理されます。小さな Java プロジェクトを使用して Web サービスを呼び出し、プログラムが応答を取得して、正しく終了します。しかし、プログラムを再度起動しましたが、今回はサーバー側でチェックが機能しません。問題の原因を確認するために wss4j コードを調べてきました。DOMReference.validate メソッドでここにたどり着きました。
今回は calcDigestValue が異なり、理由がわかりません... 誰かそれについて何か知っていますか?
ありがとう。
編集:私は研究を進めてきましたが、問題は、リクエストエンベロープの本文がクライアントとサーバーの間のどこかで変更されているという事実に起因しています...クライアントを確認しましたが、本文はほぼ確実ですそこでは変更されません。これらの変更は 2 回目の呼び出しでのみ表示されますが、理由はまだわかりません ??
cxf - CXFWSS4JインターセプターとWS-SecurityPolicy
WS-Securityポリシーについて質問があります。CXFWSS4JインターセプターまたはWS-Securityポリシーを使用してWS-Securityを実装できます。この2つのアプローチの違いは何でしょうか?WS-Securityポリシーをwsdlに埋め込むのは、cxfにインターセプターを追加するよりも難しいことがわかりました。この2つの違いを理解させてください。前もって感謝します
spring - wsse:security の名前空間
私の問題は、ユーザー名パスワード認証用の Wss4jSecurityInterceptor を持つ Web サービスを呼び出そうとしていることです。
生成されるリクエストは次のようになります。
これは機能していませんが、名前空間、つまりxmlns:wsseを変更すると
それは正常に動作します。
<wsse:Security>
タグで生成された名前空間を自分のコードから変更する方法を知りたい
spring - Wss4jSecurityInterceptor が応答を復号化しない
ws-security に Wss4jSecurityInterceptor を使用して、Spring-ws に実装された Web サービス クライアントがあります。
エンドポイントの呼び出しは機能し、データは暗号化され、署名されて送信されますが、応答が受信されても復号化されません。代わりに JAXB の unmarshaller が呼び出され、次のようなエラーが発生します。
期待される要素は、xdd 内のすべてのデータ型をリストします。
これは私の Wss4jSecurityIntercepter が構成されているものです:
何がうまくいかないのですか?
ありがとう。
EDIT : これは、handleResponse で false を返した ClientInterceptor が原因で、wss4j インターセプターの前に配置されていたため、すべての Interceptor 処理が停止しました。
wss4j - WSS4J は XKMS をサポートしていますか?
キーストアの代わりにXKMSを使用して秘密鍵と公開鍵を取得するように WSS4J を構成できますか?
これは、キーストア構成の例です。
XKMS を使用するための同様のセットアップはありますか、または XKMS を使用してorg.apache.ws.security.components.crypto.Crypto
キーを取得するためのカスタム実装を作成する必要がありますか?
wss4j - wss4j-1.6.10 の WSDoAllSender クラスの置き換え?
wssj4-1.5.12 でうまく動作する WSDD があります。次のようになります。
しかし、wss4j-1.6.10 に切り替えた後、ClassNotFoundException が発生します。
WSDoAllSender が wss4j-1.6.4 API に含まれなくなったようです。しかし、私はその代わりを見つけることができないようです。wss4j は SOAP 接続用の UsernameToken を引き続きサポートしていますか? WSDoAllSender の代替クラスは何ですか?
ありがとうございました。