問題タブ [xml-signature]

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.

0 投票する
2 に答える
2962 参照

xml - OpenSAML と OpenSSO を使用した署名検証の問題

サービス プロバイダー サイトで OpenSAML を使用して、クライアントに SSO を提供しています。私たちのクライアント (ID プロバイダー) は、最後に OpenSSO を使用しています。OpenSSO によってポストされる SAML 応答は、名前空間によって修飾されていない署名要素に関しては少し異なります。これは OpenSAML ではうまくいかないようで samlResponse.getSignature()、署名を検証できないため、メソッドから null が返されます。

問題を引き起こしている SamlReponse の署名スニペット


機能する別の SAML レスポンスからの署名スニペット


上記からわかるように、OpenSSO サーバーからの署名スニペットには、SAML バインディング仕様で指定されている名前空間修飾子が含まれていません。

私にとっての最後のオプションは、OpenSAML ライブラリを機能させるために署名要素の前に名前空間を追加するために投稿された SAMLResponse のいくつかのマッサージを行うことです。

OpenSAML ライブラリを使用してこれを解決する方法についてのアイデアは高く評価されています。

よろしくお願いします CJ

0 投票する
4 に答える
15428 参照

c# - SignedXml checksignature が false を返す

この問題に関する他の投稿を見てきましたが、私の状況に対処しているようには見えません。

先週、SAML アサーションを検証しようとしましたが、SAML を送信したクライアントが 2 つありますが、検証できません。

主なプロセスは、base64 でエンコードされたアサーションを取得し、それをデコードすることです。PreserveWhitespace = true で XmlDocment にロードします。

検証方法は、

Web.Config から読み取ったクライアントからの証明書を持っています (base64 でエンコードされた文字列として保存されます) xmlelement は署名された要素であり、signedXml は新しい SignedXml(xmlElement) で作成された SignedXml オブジェクトです

どちらのクライアントも checksignature によって false が返されますが、証明書を使用して独自の署名付き saml を作成すると、true が返されます。

ここで何が欠けていますか?

編集: はい、両方のクライアントが Java 上にあり、SetSigningKeyFromKeyInfo メソッドを投稿しました

0 投票する
1 に答える
343 参照

xml - 着信XMLPOSTからWCFRESTfulサービスへのXMLDSIG要素を取り除きます

皆さん、私はXMLドキュメントの下部にXMLDSIGXML署名を提供することで保護されるRESTfulサービスを構築しています。このドキュメントをサーバーに送信すると、WCFサービスはHTTPペイロードでXML逆シリアル化メソッドを実行して、C#クラスを提供します。残念ながら、この逆シリアル化が適切に行われるためには、セキュリティのためだけに必要ですが、C#クラス定義にはXML署名の定義に必要なすべてのプロパティが必要です。

だから、私がしたいのはこれです:

  • WCFサービスの動作を構築します。この動作は、呼び出し前にXML署名を調べ、検証してから、通常のメソッド呼び出しの逆シリアル化の前にXMLから削除します。

これは可能ですか?もしそうなら、どこでこれを行う方法を探し始めることができますか?ちょうどいいWCF注入ポイントが見つからなかったので、近くにいるような気がします。

psすべてが.NET4.0、Visual Studio 2010、IIS7以降です。

0 投票する
2 に答える
2554 参照

xml - dsig:Signature と TLS クライアント証明書を使用した XML メッセージへの署名の違い

この質問が少し曖昧であるか、間違った用語を使用している可能性があることを認識しています。これは、この問題を理解しようとしているためです:)。

dsig:Signature セクションを使用して、XML メッセージのデジタル署名を実装する必要があります。私はこのプロセスを理解していると思います。秘密鍵を使用して署名します。これにより、メッセージを送信したのは私であり、誰も改ざんされていないことが受信者に保証されます。

これは TLS クライアント証明書の実装とは異なりますが、目標は同じですか? (TLS はトランスポート レベルだからですよね?) クライアント証明書を実装する方が簡単でしょうか? 一方が他方よりも優れていますか?

お返事ありがとうございます。

マルティン

更新 1:

もう1つの違いは、TLSクライアント証明書を使用するとメッセージ全体が暗号化されるのに対し、デジタル署名ではメッセージ自体が署名セクションを含むプレーンテキストになることです.

0 投票する
1 に答える
496 参照

java - IBM SDK 6.0 を使用した XML 署名の生成

IBM の JRE 6.0 を使用して SAML2 アサーションに署名しようとすると、興味深い問題が発生します。Sun JDK でコードを実行すると、アサーションに正しく署名され、署名が検証されます。IBM JRE でまったく同じコードを実行すると、アサーションは正しく作成されますが、署名は検証されません。繰り返しますが、これは実際、Jetty から実行されているのと同じコードであり、まったく同じ Jetty 構成と WAR ファイルでもあります。異なる JRE を持つ異なるポートで実行されているが、同じ Jetty ホームを指している Jetty の 2 つのインスタンスがあります。Sun JRE で生成された署名は検証されますが、IBM JRE で生成された署名は検証されません。私は率直に言って困惑しており、試してみるものが不足しているので、何か提案があれば助かります.

0 投票する
2 に答える
7501 参照

java - XML 署名の手動検証

手動の参照検証 (すべての参照要素を正規化 --> SHA1 --> Base64 --> DigestValue コンテンツと同じかどうかを確認) は正常に実行できますが、SignatureValue の検証に失敗します。正規化してハッシュする SignedInfo は次のとおりです。

タグ間のすべてのスペースを削除した後 (要素全体を 1 行にまとめた後)、次の sha1 ダイジェストを取得します (Base64):

6l26iBH7il/yrCQW6eEfv/VqAVo=

ここで、SignatureValue コンテンツの復号化後に同じダイジェストを見つけることを期待していますが、別のより長い値が得られます。

MCEwCQYFKw4DAhoFAAQU3M24VwKG02yUu6jlEH+u6R4N8Ig=

解読のためのJavaコードは次のとおりです。

私を大いに混乱させるのは、2 つのダイジェストのサイズが異なることですが、もちろん、2 つの計算からまったく同じ値を取得する必要もあります。助言がありますか?ありがとうございました。

0 投票する
2 に答える
5005 参照

java - xml の公開鍵を使用した javax.xml.crypto.dsig 検証

javax.xml.crypto.dsig を使用して、公開鍵を指定せずに XMLSignature をアンマーシャリングして検証するにはどうすればよいですか? 公開鍵は署名済みの xml にあるようですが、それを取得する方法がわかりません。

私が知る限り、キーの代わりに KeySelector を DOMValidateContext に渡す必要があります。ただし、KeySelector の実装方法がわかりません。

KeySelector の実装方法について私が見つけた唯一の例を次に示し ます。

残念ながら、うまくいきません。その実装では、次のことを行いますが、KeyValue 要素がないため、常に失敗します (KeyValue 要素の代わりに、それらからの鍵)。

それで、これを行う方法はありますか?公開鍵がなくても xml ファイルの署名を検証できるようにしたいと考えています。XMLから公開鍵を取得したいだけです。

0 投票する
1 に答える
2011 参照

xml - XMLファイルはこの方法で署名できますか?

ファイルに変更が加えられていないことを確認するために、XMLファイルのチェックサムが必要です。

MD5チェックサムを作成したら、まったく同じファイル内にMD5チェックサムを「埋め込む」ことができます。ファイルの最初のX文字に基づかない部分的なチェックサムを作成できるかどうかはわかりませんが、おそらく可能です。

どうもありがとうございます...

0 投票する
8 に答える
23062 参照

java - Javaで空白や改行のないXML署名を作成するにはどうすればよいですか?

私はブラジルの「NotaFiscalEletronica」プロジェクトで働いています。このプロジェクトでは、XMLドキュメントに署名するための標準的な方法を定義しています。

最近、署名タグ(*)を含め、タグ間に空白が絶対にないことを要求するようになりました。

たまたまapacheのXMLSignatureを使用していて、インデントされていない署名を生成できないようです。

署名後に空白を削除すると、署名が壊れます。

カノニカライザー/トランスフォーマーのセットも事前定義されているため、変更できません。

インデントまたは空白を制御するためのオプションまたはパラメーターがXMLSignatureAPIに見つかりませんでした。

以下はコードです:

そして、以下は結果の署名(スニペット)です:

(不要な)改行に注意してください。

どんな助けでも大歓迎です。

よろしくお願いします。

(*)明確化:新しいルールは、要素のみのタグ間の空白(またはその他のテキスト)を禁止します。例として、これは許可されます:

これは禁止されますが:

後者の場合、空白(改行)は2つのタグの間にあるため、つまり、要素のみのタグ内に配置されているためです。

0 投票する
1 に答える
2884 参照

apache - XMLSec:署名の何が問題になっていますか?(「URIの参照にはXMLSignatureInputがありません」)

私はapache-santuario1.4.4を使用して、この署名されたメッセージを生成しています。

使用しているサービスに送信すると、次のように応答します。

私はたくさんグーグルで検索しましたが、このエラーについてはほとんど何も見つかりませんでした。参照は正しく宣言されていませんか?何が間違っている可能性がありますか?任意のアイデアをいただければ幸いです。

前もって感謝します。