Brent,
 
That worked perfectly. Here is the resulting code I used from my first
post:
 
..
 
      byte inputBytes[] = token.getBytes();
      Document doc = db.parse(new ByteArrayInputStream(inputBytes));
 
// Set up required ID attribute
Element rootElement = doc.getDocumentElement();
      String uriRef =
doc.getDocumentElement().getAttribute("AssertionId");
      Attr id =
doc.getDocumentElement().getAttributeNode("AssertionID");
      IdResolver.registerElementById(rootElement, id);
          
      Element sigElement = null;
      NodeList nodes =
doc.getElementsByTagNameNS(org.apache.xml.security.utils.Constants.Signa
tureSpecNS,"Signature");
 
..
 
I had to use the IdResolver.(Element,Attr) method. Thanks again for your
help and hopefully this thread helps others out trying to figure this
stuff out,
 
Phil
      
 
-----Original Message-----
From: Brent Putman [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, May 23, 2007 5:15 PM
To: security-dev@xml.apache.org
Subject: Re: "Cannot resolve element with ID" Error
 



 
The system configuration versioning is limited by an application server
and is:
 
JDK 1.4.11
XML Apache Security Library 1.2.0 with xmlsec-1.2.96.jar


Pretty sure that version is too old to have the SAML 1.1 support
described.  If you can't upgrade to a newer library version, then I
think your only options are:

1) validate the DOM against the SAML 1.1. schema before you attempt
signature verification

2) manually preprocess the DOM and mark the ID attributes before you
attempt signature verification.



Actually, another option you could try, maybe even better for you
situation, is to preprocess the DOM and manually register the ID
value-to-Element mapping in the IdResolver.

In org.apache.xml.security.utils.IdResolver, see
IdResolver#registerElementById(Element, Attr)
IdResolver#registerElementById(Element, String)


I just remembered that that is supported, but I have not tried it, YMMV.

--Brent

Reply via email to