Maison > développement back-end > C++ > Comment générer et signer numériquement une assertion SAML dans un message SOAP à l'aide de C# ?

Comment générer et signer numériquement une assertion SAML dans un message SOAP à l'aide de C# ?

DDD
Libérer: 2025-01-18 06:36:13
original
835 Les gens l'ont consulté

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

Ce code C# montre la génération d'une assertion SAML, sa signature numérique et son intégration dans un message SOAP. Examinons étape par étape les fonctionnalités du code :

Création de messages SOAP (CreateSoap Méthode) :

La méthode CreateSoap construit le cadre de base des messages SOAP. Cela inclut la création de l'enveloppe, de l'en-tête et du corps SOAP. Des éléments cruciaux comme les adresses To et Action, MessageID et l'en-tête wsse:Security sont ajoutés. L'en-tête wsse:Security agit comme un espace réservé pour l'assertion SAML signée ajoutée ultérieurement.

Signature d'assertion SAML (SignXmlWithCertificate Méthode) :

La méthode SignXmlWithCertificate gère le processus de signature numérique pour l'assertion SAML. Il prend l'élément d'assertion et un objet X509Certificate2 en entrée. Le processus de signature implique :

  1. Création d'un objet SignedXml, initialisé avec l'élément assertion.
  2. Définition de la propriété SigningKey de SignedXml sur la clé privée du certificat.
  3. Créer un objet Reference et l'ajouter à SignedXml. La référence pointe vers les données à signer (une chaîne vide ici, signifiant l'intégralité de l'assertion).
  4. Création d'un objet KeyInfo et ajout d'une clause KeyInfoX509Data contenant le certificat.
  5. Calcul de la signature à l'aide de ComputeSignature et obtention de sa représentation XML via GetXml.
  6. Ajout de la signature XML à l'élément d'assertion.

Création d'éléments de sujet (CreateSubject Méthode) :

La méthode CreateSubject ajoute l'élément <subject> à l'assertion SAML. Cet élément contient des informations relatives au sujet, telles que le nom et la méthode de confirmation. Dans cet exemple, les détails du sujet sont codés en dur.

Intégration : assertion signée et demande SOAP :

Suite à la signature et à la création du sujet, l'assertion signée est intégrée dans l'en-tête wsse:Security. Le corps SOAP, qui contient actuellement des données d'espace réservé, peut être remplacé par la charge utile SOAP réelle.

Enregistrement du XML signé :

Enfin, le document XML complet signé numériquement est enregistré dans un fichier.

Comment utiliser :

Pour utiliser ce code :

  1. Remplacez le chemin du certificat (pfxpath) par le chemin d'accès à votre certificat.
  2. Assurez-vous que le corps SOAP (xmlBytes) contient la requête XML correcte.
  3. Exécutez le programme.

Le fichier XML résultant contiendra l'assertion SAML signée numériquement intégrée dans le message SOAP. Cette sortie peut être utilisée pour l'authentification ou l'autorisation avec un système distant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal