2016-10-31 5 views

Antwort

1

Nach dem opensaml2 offical docs (doc1 & doc2), können Sie versuchen, den Code zu verwenden, unter der SAML-XML-Antwort mit OpenSAML zu validieren.

// Initialize the library 
DefaultBootstrap.bootstrap(); 

// Get parser pool manager 
BasicParserPool ppMgr = new BasicParserPool(); 
ppMgr.setNamespaceAware(true); 

// Get org.w3c.dom.Document Object from response 
HttpURLConnection req = (HttpURLConnection) new URL("<saml-xml-url>").openConnection(); 
// Add some necessary headers for the request 
// req.addRequestProperty("...", "..."); 
// ... 
InputStream in = req.getInputStream(); 
Document inCommonMDDoc = ppMgr.parse(in); 

// Get the DOMSource from org.w3c.dom.Document Object 
DOMSource domSource=new DOMSource(document); 

//Add an extension schema via the code SAMLSchemaBuilder.addExtensionSchema(String schema) if necessary 
Schema schema = SAMLSchemaBuilder.getSAML11Schema(); 

// Get a Validator instance. 
Validator validator = schema.newValidator(); 
try { 
    validator.validate(domSource); 
    System.out.println("Result : Valid!"); 
} catch(Exception e) { 
    System.out.println("Result : Invalid!"); 
} 
+0

es einmal, seltsam ich ein 'cvc-elt.1 erhalten: Kann nicht die Deklaration des Elements samlp finden: Response' aber das erste Element des XML ist eigentlich' Gobliins

+0

ein mehr Ding hart, wie kann ich das SAML11-Schema in ein SAML2-Schema ändern? – Gobliins

+0

@Gobliins, Entsprechend dem Javadoc der Klasse [SAMLSchemaBuilder # getSAML11Schema] (http://www.atetric.com/atetric/javadoc/org.opensaml/opensaml/2.6.1/org/opensaml/common/xml/SAMLSchemaBuilder. html # getSAML11Schema--), die 'SAML11'-Schema-Unterstützung, um SAML2 zu validieren. –