【发布时间】:2014-10-28 00:40:04
【问题描述】:
我正在构建一个 SAML IdP 来处理学生门户和第三方系统之间的 SSO。我的代码基于CoverMyMeds Test Harness,我在我的项目中使用了他们的一些未更改的库。我还设置了他们的示例身份提供程序,以便更轻松地调试此问题。
我在此基础上构建的用于处理身份验证的页面从学生门户获取 GUID,使用它从内部服务检索学生详细信息并将其打包到 SAML 断言中,然后使用 x.509 证书对其进行签名在将其发送给第 3 方 SAML 服务提供商之前。正是在这里,我被困住了。尝试签署我收到的 SAML 请求时:
(来源:tennysonhull.com)
我所做的调试和研究似乎表明代码不是问题,但只是为了让您了解我是如何到达这里的:ComputeSignature() 调用来自 CertificateUtility -> AppendSignatureToXMLDocument method,它的调用来自SAML20Assertion -> SerializeAndSignSAMLResponse method,被IdPLauncher.aspx page间接调用。
This is what the assertion looks like 在我尝试签署包裹之前。我对此进行了彻底的检查,并通过调试器运行了它,但没有发现问题。
我的假设是证书有问题,该证书是自签名用于测试目的。与我合作的公司向我保证,其他集成的人过去曾使用过测试证书,但我想不出其他原因会导致失败。尽管我尝试了许多变体,但根据我的研究,我认为最有可能生成工作测试证书的命令是:makecert.exe -a md5 -r -pe -n "CN=iGradTest" -ss my -sr localmachine -sky signature "c:\iGradTest.cer",但生成的证书仍然存在同样的问题。已为生成的证书指定了一个友好名称,并设置为使用 winhttpcertcfg 与 IIS 一起使用。应用程序成功获取证书,但尝试将其添加到断言时失败。
我不知道下一步该做什么。任何有关确定和解决此问题的后续步骤的建议将不胜感激。感谢您抽出宝贵时间阅读/协助。
【问题讨论】:
标签: c# .net certificate single-sign-on saml-2.0