SAML 2.0 onelogin IdPMetadataParser возвращает пустой результат - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь проанализировать файл метаданных Idp xml инструмента SimpleSAML php с помощью java onelogin lib.

Результат IdPMetadataParser.parse XML (. ..) всегда пусто, поэтому я не могу получить действительный объект Saml2Settings.

Мои метаданные xml file:

<?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 ".

Что я делаю не так? Есть идеи?

1 Ответ

0 голосов
/ 16 марта 2020

источник: https://github.com/onelogin/java-saml/issues/177

final Map idpSettings = IdPMetadataParser.parseFile XML ("idp-метаданные. xml"); окончательные настройки Saml2Settings = new SettingsBuilder (). fromValues ​​(idpSettings) .build ();

...