我们使用 Azure B2C 自定义策略进行 SAML Sp 发起的 SSO。通过Microsoft 文档指南创建并上传证书。我们已根据本文档
共享元数据 url 中提到的
<X509Certificate>
标签的证书值。已在客户端的 SSO 配置中上传证书。
使用 SAML 响应进行测试可以提供正确的数据,如下面的签名所示。
但是客户端正在使用 ComponentSpace 库 和 var mySSOResult = await _samlServiceProvider.ReceiveSsoAsync();
函数,它会抛出以下错误,我们是否会陷入这一点。
ComponentSpace.Saml2.Exceptions.SamlSignatureException:SAML 响应签名验证失败。在ComponentSpace.Saml2.SamlServiceProvider.VerifySamlResponseSignatureAsync(XmlElement samlResponseElement)在ComponentSpace.Saml2.SamlServiceProvider.ProcessSamlResponseAsync(XmlElement samlResponseElement,字符串relayState)在ComponentSpace.Saml2.SamlServiceProvider.ReceiveSsoAsync()在Dekra.AdaptivePlatform.Web.Areas.App.Controllers。 /agent/_work/1/s/src/Dekra.AdaptivePlatform.Web.Mvc/Areas/App/Controllers/SamlController.cs 中的 SamlController.AssertionConsumerService(StringtenantId):Microsoft.AspNetCore.Mvc.Infrastruct.ActionMethodExecutor 的第 264 行。 TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper 映射器、ObjectMethodExecutor 执行器、对象控制器、Object[] 参数)位于 Microsoft.AspNetCore.Mvc.Infrastruct.ControllerActionInvoker.g__Logged|12_1(ControllerActionInvoker 调用程序)位于 Microsoft.AspNetCore.Mvc.Infrastruct.ControllerActionInvoker.g__Awaited|10_0 (ControllerActionInvoker 调用者、任务上一个任务、下一个状态、范围范围、对象状态、布尔值 isCompleted)提前致谢。
检查您是否已将
.cer
或
.pem
保存到代码或配置中引用的路径,并且应用程序可以访问它。以下是通常如何从 ComponentSpace 中的文件加载令牌签名公钥的方法。
// Load public certificate from file
var certificate = new X509Certificate2("path/to/public/certificate.cer");
// Add certificate to SignatureValidationCertificates collection
samlServiceProvider.SignatureValidationCertificates.Add(certificate);