此 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 表示形式。 主題元素建立(CreateSubject
方法):
CreateSubject
方法將 <subject>
元素加入 SAML 斷言中。 此元素包含與主題相關的訊息,例如名稱和確認方法。 在此範例中,主題詳細資訊是硬編碼的。
整合:簽章斷言與 SOAP 請求:
在簽名和主題創建之後,簽名的斷言將整合到 wsse:Security
標頭中。 目前保存佔位符資料的 SOAP 主體可以替換為實際的 SOAP 負載。
儲存簽署的 XML:
最後,完整的、經過數位簽署的 XML 文件將會儲存到文件中。
使用方法:
要使用此程式碼:
pfxpath
) 替換為您的證書路徑。 xmlBytes
) 包含正確的 XML 請求。 產生的 XML 檔案將包含嵌入 SOAP 訊息中的數位簽章 SAML 斷言。此輸出可用於遠端系統的身份驗證或授權。
以上是如何使用 C# 在 SOAP 訊息中產生 SAML 斷言並對其進行數位簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!