発信ソープメッセージにXML署名を適用する方法
-
29-09-2019 - |
質問
CXF CodeGenを使用してスタブとバインディングを生成しました。すべてが正常に実行されますが、セキュリティの問題のためにサーバーは依然としてメッセージを拒否します。基本的に、証明書(私が持っている)が必要なすべての注意を払うための3つのレイヤーがあります。
- パイプ上のSSL暗号化
- 特定のデータ要素の証明書署名
- ペイロードデータの証明書XML署名。
スープを多少スパイスするために、実際の署名と証明書を完全に制御できません。基本的に、適切なデータを抽出し、署名するためにそれを送信する必要があります。トランザクションで署名されたデータを再注入する必要があります。
私がアクセスできる証明書は、ローカルマシンのWindows証明書ストアにあります(SSLといくつかの署名)
ドキュメントを読むフレームワークは、構成のVoodoo Magicに大きく依存しているようです。残念ながら、私が見つけたリンクのほとんどは、証明書を生成する方法を詳細に説明するのに多くの時間を費やしていますが、実際にどのように使用するかについてはむしろスキップしています。
CXFを使用するにはどうすればよいですか?
適切なフックにアクセスするにはどうすればよいですか。メッセージに署名を挿入できますか?
ありがとう
解決
CXFには、最初から適切な署名を生成するすべての機能があります。私たちの問題は、署名の受信側がこの標準署名を受け入れないことでした。サーバーの不十分な実装が整っていることに必要なすべてのnit-pickinessと秘密のホカスポーカスを保証するカスタム署名システムを作成する必要がありました。名前空間プレフィックスは、トランザクションの名前空間宣言に関係なく、非常に特定の値に設定する必要がありました。 Whitespaceは時々トリミングされなければなりませんでした。
したがって、インターセプターを作成し、OUTインターセプターリストに注入しました。実際、エンドユーザーのUSBキーにある証明書にSOAPトランザクションに署名されると主張したため、少し複雑でした。私たちのシステムはすべてのインターフェイスを中央に集中させるので、それを機能させるために少しだけジャグリングする必要がありましたが、最終的にはすべて良いです。
私は標準を使用するという目標は、標準的な平均を提供することでしたが、まあ...一部の人々は、基準を作成し、瓶に自分のピクルスを追加することを主張する専門家よりも優れた専門家だと思う人もいます。誰かがラズベリージャムにピクルスを追加すると味が良くならないと言うべきです。