无效的 SAML AuthN 请求
Invalid SAML AuthN Request
通过尝试在我的 SP 和使用 ADFS 的 IDP 之间建立 SSO 连接(sp 启动),我无法从 IDP 得到答案。问题是这个 IDP 是一个黑盒子,我手头没有。
因此进行了一些调试,我使用 this 工具检查了我的查询是否有效且格式正确,并收到了这条消息
Invalid SAML AuthN Request. Not match the saml-schema-protocol-2.0.xsd
但他们没有更多细节,即使我检查 saml protocol schema,我也找不到这个请求的问题所在:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_2e674db5054e407c30af"
Version="2.0"
IssueInstant="2019-05-10T09:39:52Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://my-sp.com/callback">
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
</saml:Issuer>
<samlp:NameIDPolicy
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
AllowCreate="true">
</samlp:NameIDPolicy>
<samlp:RequestedAuthnContext
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Comparison="exact">
<saml:AuthnContextClassRef
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
我是否遗漏了必填字段,或者某个值的格式不正确?
首先,您应该将验证 XML 与 XSD 架构工具一起使用。当我这样做时,我得到:
Line: 14 | Column: 0 --> Element '{urn:oasis:names:tc:SAML:2.0:protocol}NameIDPolicy': Character content is not allowed, because the content type is empty.
所以,我删除了标签 </samlp:NameIDPolicy>
并关闭了您的 NameIDPolicy
,如下所示:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_2e674db5054e407c30af"
Version="2.0"
IssueInstant="2019-05-10T09:39:52Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://my-sp.com/callback">
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
</saml:Issuer>
<samlp:NameIDPolicy
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
AllowCreate="true" />
<samlp:RequestedAuthnContext
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Comparison="exact">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext></samlp:AuthnRequest>
希望对您有所帮助
通过尝试在我的 SP 和使用 ADFS 的 IDP 之间建立 SSO 连接(sp 启动),我无法从 IDP 得到答案。问题是这个 IDP 是一个黑盒子,我手头没有。
因此进行了一些调试,我使用 this 工具检查了我的查询是否有效且格式正确,并收到了这条消息
Invalid SAML AuthN Request. Not match the saml-schema-protocol-2.0.xsd
但他们没有更多细节,即使我检查 saml protocol schema,我也找不到这个请求的问题所在:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_2e674db5054e407c30af"
Version="2.0"
IssueInstant="2019-05-10T09:39:52Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://my-sp.com/callback">
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
</saml:Issuer>
<samlp:NameIDPolicy
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
AllowCreate="true">
</samlp:NameIDPolicy>
<samlp:RequestedAuthnContext
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Comparison="exact">
<saml:AuthnContextClassRef
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
我是否遗漏了必填字段,或者某个值的格式不正确?
首先,您应该将验证 XML 与 XSD 架构工具一起使用。当我这样做时,我得到:
Line: 14 | Column: 0 --> Element '{urn:oasis:names:tc:SAML:2.0:protocol}NameIDPolicy': Character content is not allowed, because the content type is empty.
所以,我删除了标签 </samlp:NameIDPolicy>
并关闭了您的 NameIDPolicy
,如下所示:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_2e674db5054e407c30af"
Version="2.0"
IssueInstant="2019-05-10T09:39:52Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://my-sp.com/callback">
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
</saml:Issuer>
<samlp:NameIDPolicy
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
AllowCreate="true" />
<samlp:RequestedAuthnContext
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Comparison="exact">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext></samlp:AuthnRequest>
希望对您有所帮助