我正在尝试使用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 ...