2010-11-16 5 views
0

Je rencontre un problème intéressant en essayant de signer une assertion SAML2 à l'aide du JRE 6.0 d'IBM. Si je cours le code sous un JDK de Sun, il signe les assertions correctement et la signature vérifie. Si je cours exactement le même code sous IBM JRE, l'assertion est créée correctement, mais la signature ne vérifie pas. Encore une fois, c'est le même code, en effet, car il fonctionne à partir de Jetty, c'est exactement la même configuration de Jetty et le fichier WAR. J'ai deux instances de Jetty fonctionnant sur différents ports avec des JRE différents, mais pointant vers la même maison Jetty. Les signatures générées sous Sun JRE sont validées, mais pas celles générées sous IBM JRE. Je suis franchement perplexe et je manque de choses à essayer, donc toute suggestion serait utile.Génération de signature XML à l'aide d'IBM SDK 6.0

+0

Ok, compris cela. Il s'avère que l'implémentation de XML Dsig dans Sun est plus tolérante que Xerces/XML Security et l'implémentation d'IBM. Il y avait un mélange d'appels DOM1 et DOM2 qui causaient des problèmes et la façon dont les URI étaient déréférencés a également causé des problèmes. Le remplacement de tous les appels DOM1 (appels DOM sans espace de nom) par des appels DOM2 et la définition des informations d'identification sur DOMSignContext ont résolu le problème et fonctionnent maintenant sous les deux JVM. –

+0

Hey pourriez-vous expliquer plus loin ce que vous avez fait dans votre commentaire? C'est l'Implémentation Xerces qui doit être changé? Quel est le meilleur moyen de le faire? J'ai essayé de changer le Parent_ClassLaoader mais j'ai obtenu des erreurs de chemin de classe Servlet. Donc, je voudrais éviter de faire ça. – MikeDubs307

+0

Fondamentalement, je me suis juste assuré que chaque appel DOM était celui qui utilise une valeur d'espace de noms. Ainsi, au lieu de Document.createElement(), j'ai utilisé Document.createElementNS(). En s'assurant que tout avait un espace de noms défini, il a effacé les erreurs. Il n'y a pas besoin de changer les implémentations de Xerces, ne mélangez pas les appels DOM1 (pas d'espace de noms) et DOM2 + (espace de noms) sur le même document. –

Répondre

1

Quelques années en retard, mais je vais y répondre moi-même. Le problème était un mélange d'appels DOM1 (non-namespace aware) et DOM2 + (namespace aware). En déplaçant tout vers les appels DOM2 + prenant en charge l'espace de noms, le problème s'est dissipé.

Questions connexes