无法从 SAML 响应验证 SAML 响应签名

问题描述 投票:0回答:1

我们使用 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)

提前致谢。

azure azure-ad-b2c saml azure-ad-b2c-custom-policy component-space
1个回答
0
投票
您的应用程序似乎没有使用正确的证书来验证来自 IdP (B2C) 的签名。

检查您是否已将

.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);
    
© www.soinside.com 2019 - 2024. All rights reserved.