Kod C# ini menunjukkan penjanaan penegasan SAML, menandatanganinya secara digital dan membenamkannya dalam mesej SOAP. Mari kita periksa fungsi kod langkah demi langkah:
Penciptaan Mesej SOAP (CreateSoap
Kaedah):
Kaedah CreateSoap
membina rangka kerja mesej SOAP asas. Ini termasuk membina sampul, pengepala dan badan SOAP. Elemen penting seperti alamat To
dan Action
, MessageID
dan pengepala wsse:Security
ditambahkan. Tajuk wsse:Security
bertindak sebagai pemegang tempat untuk penegasan SAML yang ditandatangani kemudian ditambahkan.
Penandatanganan Penegasan SAML (SignXmlWithCertificate
Kaedah):
Kaedah SignXmlWithCertificate
mengendalikan proses tandatangan digital untuk penegasan SAML. Ia mengambil elemen penegasan dan objek X509Certificate2 sebagai input. Proses menandatangani melibatkan:
SignedXml
, dimulakan dengan elemen penegasan.SigningKey
SignedXml
kepada kunci peribadi sijil.Reference
dan menambahkannya pada SignedXml
. Rujukan menunjukkan kepada data yang akan ditandatangani (rentetan kosong di sini, menandakan keseluruhan penegasan).KeyInfo
dan menambah klausa KeyInfoX509Data
yang mengandungi sijil.ComputeSignature
dan mendapatkan perwakilan XMLnya melalui GetXml
.Penciptaan Elemen Subjek (CreateSubject
Kaedah):
Kaedah CreateSubject
menambah elemen <subject>
pada penegasan SAML. Elemen ini mengandungi maklumat berkaitan subjek, seperti nama dan kaedah pengesahan. Dalam contoh ini, butiran subjek dikodkan keras.
Integrasi: Penegasan yang Ditandatangani dan Permintaan SOAP:
Susulan tandatangan dan penciptaan subjek, pernyataan yang ditandatangani disepadukan ke dalam pengepala wsse:Security
. Badan SOAP, yang pada masa ini memegang data pemegang tempat, boleh digantikan dengan muatan SOAP sebenar.
Menyimpan XML Bertandatangan:
Akhir sekali, dokumen XML lengkap yang ditandatangani secara digital disimpan pada fail.
Cara Penggunaan:
Untuk menggunakan kod ini:
pfxpath
) dengan laluan ke sijil anda.xmlBytes
) mengandungi permintaan XML yang betul.Fail XML yang terhasil akan mengandungi pernyataan SAML yang ditandatangani secara digital yang dibenamkan dalam mesej SOAP. Output ini boleh digunakan untuk pengesahan atau kebenaran dengan sistem jauh.
Atas ialah kandungan terperinci Bagaimana untuk Menjana dan Menandatangani Penegasan SAML secara Digital dalam Mesej SOAP menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!