Generate a Metadata Object from string in OpenSAML3

DD K ddk05361 at gmail.com
Wed Aug 14 04:29:35 EDT 2019


Hi All,

What I'm currently trying is to migrate from OpenSAML2.x to OpenSAML3.x.
Currently on OpenSAML2.x the code is as below:

private EntityDescriptor generateMetadataObjectFromString(String
metadataString) {
    EntityDescriptor entityDescriptor = null;
    try {
        DocumentBuilderFactory factory =
IdentityUtil.getSecuredDocumentBuilderFactory();
        factory.setNamespaceAware(true);
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new
ByteArrayInputStream(metadataString.getBytes()));
        Element node = document.getDocumentElement();
        DOMMetadataResolver idpMetaDataProvider = new DOMMetadataResolver(node);
        idpMetaDataProvider.setRequireValidMetadata(true);
        idpMetaDataProvider.setParserPool(new BasicParserPool());
        idpMetaDataProvider.initialize();
        XMLObject xmlObject = idpMetaDataProvider.getMetadata();
        entityDescriptor = (EntityDescriptor) xmlObject;
    } catch ( ComponentInitializationException | SAXException |
ParserConfigurationException | IOException e) {
        log.error("Error While reading Service Provider metadata xml", e);
    }
    return entityDescriptor;
}


So after changing them to new classes and methods it looked like:

private EntityDescriptor generateMetadataObjectFromString(String
metadataString) {
    EntityDescriptor entityDescriptor = null;
    try {
        DocumentBuilderFactory factory =
IdentityUtil.getSecuredDocumentBuilderFactory();
        factory.setNamespaceAware(true);
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new
ByteArrayInputStream(metadataString.getBytes()));
        Element node = document.getDocumentElement();
        DOMMetadataResolver idpMetaDataProvider = new DOMMetadataResolver(node);
        idpMetaDataProvider.setRequireValidMetadata(true);
        idpMetaDataProvider.setParserPool(new BasicParserPool());
        idpMetaDataProvider.initialize();
        // XMLObject xmlObject = idpMetaDataProvider.getMetadata();
        // entityDescriptor = (EntityDescriptor) xmlObject;
    } catch ( ComponentInitializationException | SAXException |
ParserConfigurationException | IOException e) {
        log.error("Error While reading Service Provider metadata xml", e);
    }
    return entityDescriptor;
}

But I've struggled to find a resource on how to generate a EntityDescriptor
to return from the method cause now there is no method such as
*generateMetadata()* in *DOMMetadataResolver*, keeping this apart there is
a method called *resolveSingle()* but it needs a *CriteriaSet(which i do
not know what to include)*. The *two commented lines* are the ones where
I'm stuck but if I'm missing anything in any other place let me know.

Any answers would be appreciated,
Deshan Koswatte
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/dev/attachments/20190814/43bfd69c/attachment.html>


More information about the dev mailing list