SAML 2.0 onelogin IdPMetadataParser返回空结果

问题描述 投票:0回答:1

我正在尝试使用Java onelogin库解析SimpleSAMLphp工具的Idp元数据xml文件。

IdPMetadataParser.parseXML(...)]的结果始终为空,因此无法获得有效的Saml2Settings对象。

我的元数据xml文件:

<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="http://localhost:8666/simplesaml/saml2/idp/metadata.php">
    <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>MIIDXTCCAkWg...</ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:KeyDescriptor use="encryption">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>MIIDXTCCAkWg...</ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8666/simplesaml/saml2/idp/SingleLogoutService.php"/>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8666/simplesaml/saml2/idp/SSOService.php"/>
        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:8666/simplesaml/saml2/idp/SSOService.php"/>
    </md:IDPSSODescriptor>
</md:EntityDescriptor>

我的代码:

try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(new InputSource(new FileReader("metadata.xml")));

    Map<String, Object> metaData = IdPMetadataParser.parseXML(doc);
    // metaData is here empty

    Saml2Settings settings = new Saml2Settings();
    IdPMetadataParser.injectIntoSettings(settings, metaData);
}
catch (Exception e) {
     e.printStackTrace();
}

似乎XPath实现为查询“ // md:EntityDescriptor / md:IDPSSODescriptor”返回了空结果。

我做错了什么?有什么主意吗?

我正在尝试使用java onelogin lib解析SimpleSAMLphp工具的Idp元数据xml文件。 IdPMetadataParser.parseXML(...)的结果始终为空,因此我无法获得有效的Saml2Settings ...

java xml-parsing metadata saml onelogin
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.