OpenSaml读取元数据

时间:2015-09-25 07:41:16

标签: java single-sign-on saml saml-2.0 opensaml

我想使用Open Saml 2从Idp读取元数据。当我尝试解组元数据时,openSaml只显示属性的getter Unknown Atrributes()。看起来我错过了一些观点,因为在阅读Idp响应SAML时代码运行良好。 (它显示了返回断言列表的getAssertions())。

我需要解析元数据并查找有关Idp的信息。

这里的方法

     public Metadata metadataReader() {

        ByteArrayInputStream bytesIn = new ByteArrayInputStream(ISSUER_METADATA_URL.getBytes());
        BasicParserPool ppMgr = new BasicParserPool();

        ppMgr.setNamespaceAware(true);
        // grab the xml file
//      File xmlFile = new File(this.file);
        Metadata metadata = null;
        try {
            Document document = ppMgr.parse(bytesIn);
            Element metadataRoot = document.getDocumentElement();
            QName qName = new QName(metadataRoot.getNamespaceURI(), metadataRoot.getLocalName(),
                    metadataRoot.getPrefix());
            Unmarshaller unmarshaller = Configuration.getUnmarshallerFactory().getUnmarshaller(qName);
            metadata = (Metadata) unmarshaller.unmarshall(metadataRoot);


            return metadata;

        } catch (XMLParserException e) {
            e.printStackTrace();
        } catch (UnmarshallingException e) {
            e.printStackTrace();
        }

        return null;

    }

1 个答案:

答案 0 :(得分:1)

我建议您使用元数据提供程序为您做繁重的工作。 FilesystemMetadataProvider通常很适合。

我有一个blog post,解释了如何使用它。