您好我正在尝试使用 SSO 将我的客户的用户直接验证到我的网站。我的客户的 IDP 是 Microsoft ADFS,我正在使用 Passport-SAML ( https://github.com/bergie/passport-saml ) 来配置 SSO 流程。
当我尝试登录时,客户端的 ADFS 服务器日志中出现以下错误:
“联合服务在处理 SAML 身份验证请求时遇到错误”
并在异常详细信息中:
“MSIS0038:SAML 消息的签名错误。颁发者:'myCompany_com'。”
这是我遵循的过程:
1/ 使用护照脚本获取我的数据文件 myCompany.xml 并将其提供给我的客户
2/我的客户将其添加到他的 ADFS中的Add Relying Party Trust中,使用Send LDAP Attributes as Claims模板添加规则,并使用Transform an incoming Claim 选项添加另一个规则并将他的证书发送给我
错误流程: 1/ 用户从 myClient 访问身份验证区域(实际上在使用以下 URL 后重定向到那里: www.myClientSpace.myCompany.com 2/ 输入他的凭据并尝试登录,然后错误出现在 ADFS SERVER LOG 也许我的 XML 文件中缺少某些内容...
感谢您的时间和帮助!!!
PS:这里是我的 XML 文件
<EntityDescriptor entityID="myCompany_com" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIICQ...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://www.myCompany.com/adfs/postResponse/logout"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.myCompany.com/adfs/postResponse/postResponse" index="0"/>
</SPSSODescriptor>
</EntityDescriptor>