ホームページ > バックエンド開発 > C++ > C# を使用して SOAP メッセージ内の SAML アサーションを生成し、デジタル署名する方法

C# を使用して SOAP メッセージ内の SAML アサーションを生成し、デジタル署名する方法

DDD
リリース: 2025-01-18 06:36:13
オリジナル
835 人が閲覧しました

How to Generate and Digitally Sign a SAML Assertion within a SOAP Message using C#?

この C# コードは、SAML アサーションの生成、デジタル署名、SOAP メッセージ内への埋め込みを示しています。 コードの機能を段階的に調べてみましょう:

SOAP メッセージの作成 (CreateSoap メソッド):

CreateSoap メソッドは、基本的な SOAP メッセージ フレームワークを構築します。これには、SOAP エンベロープ、ヘッダー、および本文の構築が含まれます。 To および Action アドレス、MessageIDwsse:Security ヘッダーなどの重要な要素が追加されます。 wsse:Security ヘッダーは、後で追加される署名付き SAML アサーションのプレースホルダーとして機能します。

SAML アサーション署名 (SignXmlWithCertificate メソッド):

SignXmlWithCertificate メソッドは、SAML アサーションのデジタル署名プロセスを処理します。アサーション要素と X509Certificate2 オブジェクトを入力として受け取ります。 署名プロセスには以下が含まれます:

  1. アサーション要素で初期化された SignedXml オブジェクトを作成します。
  2. SigningKeySignedXml プロパティを証明書の秘密キーに設定します。
  3. Reference オブジェクトを作成し、それを SignedXml に追加します。 参照は、署名されるデータを指します (ここでは空の文字列で、アサーション全体を示します)。
  4. KeyInfo オブジェクトを作成し、証明書を含む KeyInfoX509Data 句を追加します。
  5. ComputeSignature を使用して署名を計算し、GetXml を介してその XML 表現を取得します。
  6. XML 署名をアサーション要素に追加します。

Subject 要素の作成 (CreateSubject メソッド):

CreateSubject メソッドは、<subject> 要素を SAML アサーションに追加します。 この要素には、名前や確認方法などの件名に関する情報が含まれます。 この例では、件名の詳細がハードコーディングされています。

統合: 署名付きアサーションと SOAP リクエスト:

署名とサブジェクトの作成に続いて、署名されたアサーションが wsse:Security ヘッダーに統合されます。 現在プレースホルダー データを保持している SOAP 本文は、実際の SOAP ペイロードに置き換えることができます。

署名付き XML の保存:

最後に、デジタル署名された完全な XML ドキュメントがファイルに保存されます。

使用方法:

このコードを利用するには:

  1. 証明書パス (pfxpath) を証明書へのパスに置き換えます。
  2. SOAP 本文 (xmlBytes) に正しい XML リクエストが含まれていることを確認してください。
  3. プログラムを実行します。

結果の XML ファイルには、SOAP メッセージ内に埋め込まれたデジタル署名された SAML アサーションが含まれます。この出力は、リモート システムでの認証または認可に使用できます。

以上がC# を使用して SOAP メッセージ内の SAML アサーションを生成し、デジタル署名する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート