8
votes

Vérification de la signature XML signée pour SSO SAML (en utilisant SHA256)

Utilisation de VS 2008 avec .NET Framework 3.5 sur le serveur Windows 2003.

Nous avons mis en œuvre SSO avec SAML pour la sécurité. Nous travaillons à la fin du fournisseur de services où nous validons le jeton XML SAML SAML SAML signé généré à partir du système du client. Dès maintenant les documents signés que nous avons rencontrés utilisaient l'algorithme de signature "RSA-SHA1", mais nous avons maintenant un nouveau client qui envoie un fichier avec l'algorithme de signature comme "RSA-SHA256" et voici le problème démarré. xxx

maintenant, lorsque j'essaie le même code pour ce nouveau client (avec algorithme de signature RSA-SHA256H) - cela ne fonctionne pas et je reçois l'erreur "SignatureDescription n'a pas pu être créée pour L'algorithme de signature fournie. "

passer par de nombreux blogs et articles au cours des 2-3 derniers jours, je suis venu savoir que SignatureXML ne prend pas en charge SHA256. Amende. Mais quoi ensuite. Quelque part, il a été mentionné que l'utilisation du WIF, j'ai également vérifié et essayé .

J'essaie également d'utiliser la méthode VerifYSignature de RSAPKCS1Signaturée. Mais pas vraiment sûr quels sont les deux paramètres à transmettre.


1 commentaires

J'avais l'impression que l'algorithme de cryptage était soutenu car il prend en charge l'objet X509Certificate2. La méthode Sig.CheckSignature (...) a une surcharge qui prend 2 paramètres, le X509Certificate2 et Bool. Avez-vous essayé de l'utiliser et de passer dans le cert et le vrai?


4 Réponses :


2
votes

Ceci se qualifie pour "Simple" mais peut-être pas "solution" :) Pour les quelques clients que nous avons rencontrés, nous leur avons demandé de changer de PDI pour signer à l'aide de SHA-1. Ils sont capables de le changer et quand ils le font ça marche.

Pas une solution technique, mais cela a travaillé "sur le terrain" alors je pensais que je le mentionnerais.


1 commentaires

J'ai eu des clients refusés de faire ce changement, soupir.



4
votes

pour .NET 4 et plus tôt, J'ai constaté que les travaux suivants une fois que vous avez ajouté le Security.Cryptography de http://clrsecurity.codeplex.com/

(Remarque X509CertificateFinder est le mien, recherche le certificat de signature dans le magasin de certificats par empreinte) xxx


2 commentaires

Notez qu'à partir de .NET 4.5, vous n'avez pas besoin d'installer des bibliothèques tierces de 3e parties, contrairement à .NET 4.0 et antérieure. Vous pouvez simplement ajouter une référence à System.Deploiement et appelez System.security.Cryptography.cryptoconfig.addalgorithme (RSAPKCS1Sha256SignaturéesDescription), RSASHA256NAMESPACE); Une fois dans votre processus, après quoi le code dans le code. Question originale fonctionnera avec SHA256 HASHES. Voir aussi blogs.msdn. COM / B / WINSDK / Archive / 2015/11/15 / ...


`const string rsha256namespace =" w3.org/2001/04/xmldsig- plus # RSA-SHA256 ";`



9
votes

dotnet 4.6.2+ a le plus récent SHA code> HASHES intégré. Pour DotNet 4 +, pour accéder à RSA-SHA512, RSA-SHA384 et RSA-SHA256, vous devez inclure ce code. quelque part. xxx pré>

Ensuite, vous devez activer ces descriptions de SIG en appelant le code comme celui-ci. Il vous suffit de l'appeler une fois, vous pouvez donc l'appeler à partir d'un constructeur statique si vous le souhaitez. P>

    CryptoConfig.AddAlgorithm(typeof(RsaPkCs1Sha512SignatureDescription),
        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512");
    CryptoConfig.AddAlgorithm(typeof(RsaPkCs1Sha384SignatureDescription),
        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384");
    CryptoConfig.AddAlgorithm(typeof(RsaPkCs1Sha256SignatureDescription),
        "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");


3 commentaires

.... et ..... Framework 4.6.2 prend en charge ce problème sans avoir besoin de code supplémentaire.


@Olliejones - Vous savez-vous si votre code se cassera ultérieurement et ultérieur à la cible 4.6.2?


@Stephang j'ai fait le déménagement à 4.6.1 sans problèmes. Je comprends que ce code n'est plus nécessaire en 4.6.2, car ils ont ajouté les nouveaux hachages. Voir la section X509 de blogs.msdn.microsoft.com/dotnet/2016/08/02/... . Je n'ai pas vérifié ce fait.



0
votes

Il suffit de le mettre à jour sur .NET Framework 4.6.01590 ou supérieur et il prend en charge la SHA-512 sans aucun changement de code.


0 commentaires