添加受信任的提供者 (SAML 2.0) 时遇到问题:无法解析我的服务提供者元数据
Posted
技术标签:
【中文标题】添加受信任的提供者 (SAML 2.0) 时遇到问题:无法解析我的服务提供者元数据【英文标题】:Trouble with adding Trusted Provider (SAML 2.0): can not parse my service provider metadata 【发布时间】:2012-11-04 14:49:47 【问题描述】:我在 Novell iManager 中收到错误消息“XML 格式错误。cvc-complex-type.2.4.a: 发现以元素“md:EncryptionMethod”开头的无效内容。“”之一 http ://www.w3.org/2000/09/xmldsig#":KeyInfo' 是预期的。" 添加此服务提供商元数据时:
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor entityID="https://.../" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
<md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" WantAssertionsSigned="true" AuthnRequestsSigned="true">
<md:KeyDescriptor use="encryption">
<md:EncryptionMethod xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data><X509Certificate>...</X509Certificate></X509Data>
</KeyInfo>
</md:KeyDescriptor>
<md:AssertionConsumerService isDefault="true" index="0" Location="https://.." Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
</md:SPSSODescriptor>
<md:Organization>...</md:Organization>
...
</md:EntityDescriptor>
我在 Novell iManager 中所做的事情:IdentityServers -> AH DMZ Identity Server -> New Trusted Provider -> Service Provider -> 来源:元数据文本
奇怪的是它抱怨缺少 KeyInfo 元素,而它在这里具有正确的命名空间。知道为什么会这样吗?
如果我从这里指定第三方元数据:https://federation.njedge.net/metadata/njedge-fed-metadata.xml 它会说
"XML 格式错误。 cvc-complex-type.2.4.a:发现以元素“组织”开头的无效内容。 '"http://www.w3.org/2000/09/xmldsig#":Signature, "urn:oasis:names:tc:SAML:2.0:metadata":Extensions, "urn:oasis:names: tc:SAML:2.0:metadata":RoleDescriptor, "urn:oasis:names:tc:SAML:2.0:metadata":IDPSSODescriptor, "urn:oasis:names:tc:SAML:2.0:metadata":SPSSODescriptor, "urn: oasis:names:tc:SAML:2.0:metadata":AuthnAuthorityDescriptor, "urn:oasis:names:tc:SAML:2.0:metadata":AttributeAuthorityDescriptor, "urn:oasis:names:tc:SAML:2.0:metadata":PDPDescriptor , "urn:oasis:names:tc:SAML:2.0:metadata":AffiliationDescriptor' 是预期的。 "
看起来它需要一些服务提供商特定的元数据文件格式,不幸的是我无法找到有关不同格式的 SAML 2.0 元数据的任何信息。
【问题讨论】:
【参考方案1】:好像有两个问题:
1) Novell 要求元素的严格顺序
2)它不识别像<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
这样的默认命名空间,而是使用<somenamespace:KeyInfo xmlns:somenamespace="http://www.w3.org/2000/09/xmldsig#">
奇怪:)
【讨论】:
你是用java做的吗?我正在实施类似的解决方案,我需要在我的应用程序中解析 SP 元数据以提取签名证书、断言端点等详细信息。您是否知道任何标准的 java 库来实现这一点?以上是关于添加受信任的提供者 (SAML 2.0) 时遇到问题:无法解析我的服务提供者元数据的主要内容,如果未能解决你的问题,请参考以下文章
Spring SAML 握手失败 - 无法针对受信任的密钥验证不受信任的凭据