この C# コードは、SAML アサーションの生成、デジタル署名、SOAP メッセージ内への埋め込みを示しています。 コードの機能を段階的に調べてみましょう:
SOAP メッセージの作成 (CreateSoap
メソッド):
CreateSoap
メソッドは、基本的な SOAP メッセージ フレームワークを構築します。これには、SOAP エンベロープ、ヘッダー、および本文の構築が含まれます。 To
および Action
アドレス、MessageID
、wsse:Security
ヘッダーなどの重要な要素が追加されます。 wsse:Security
ヘッダーは、後で追加される署名付き SAML アサーションのプレースホルダーとして機能します。
SAML アサーション署名 (SignXmlWithCertificate
メソッド):
SignXmlWithCertificate
メソッドは、SAML アサーションのデジタル署名プロセスを処理します。アサーション要素と X509Certificate2 オブジェクトを入力として受け取ります。 署名プロセスには以下が含まれます:
SignedXml
オブジェクトを作成します。SigningKey
の SignedXml
プロパティを証明書の秘密キーに設定します。Reference
オブジェクトを作成し、それを SignedXml
に追加します。 参照は、署名されるデータを指します (ここでは空の文字列で、アサーション全体を示します)。KeyInfo
オブジェクトを作成し、証明書を含む KeyInfoX509Data
句を追加します。ComputeSignature
を使用して署名を計算し、GetXml
を介してその XML 表現を取得します。Subject 要素の作成 (CreateSubject
メソッド):
CreateSubject
メソッドは、<subject>
要素を SAML アサーションに追加します。 この要素には、名前や確認方法などの件名に関する情報が含まれます。 この例では、件名の詳細がハードコーディングされています。
統合: 署名付きアサーションと SOAP リクエスト:
署名とサブジェクトの作成に続いて、署名されたアサーションが wsse:Security
ヘッダーに統合されます。 現在プレースホルダー データを保持している SOAP 本文は、実際の SOAP ペイロードに置き換えることができます。
署名付き XML の保存:
最後に、デジタル署名された完全な XML ドキュメントがファイルに保存されます。
使用方法:
このコードを利用するには:
pfxpath
) を証明書へのパスに置き換えます。xmlBytes
) に正しい XML リクエストが含まれていることを確認してください。結果の XML ファイルには、SOAP メッセージ内に埋め込まれたデジタル署名された SAML アサーションが含まれます。この出力は、リモート システムでの認証または認可に使用できます。
以上がC# を使用して SOAP メッセージ内の SAML アサーションを生成し、デジタル署名する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。