C# “如何修复”;处理请求时发生未经处理的异常;?

C# “如何修复”;处理请求时发生未经处理的异常;?,c#,cookies,saml,sustainsys-saml2,C#,Cookies,Saml,Sustainsys Saml2,我们正在开发一个Web应用程序,希望针对Shibboleth IDP进行授权,在IDPP上成功登录后,我们收到以下错误: 处理请求时发生未处理的异常 意外响应异常:收到的消息包含对“idd95739d3bc9e44efa1154b3e62a2e121”的意外响应。找不到请求中保留cookie的状态,因此消息不应具有InResponseTo属性。如果执行SP启动的登录时的cookie集丢失,则通常会发生此错误 Saml2Response.cs第153行中的Sustainsys.Saml2.Saml

我们正在开发一个Web应用程序,希望针对Shibboleth IDP进行授权,在IDPP上成功登录后,我们收到以下错误:

处理请求时发生未处理的异常

意外响应异常:收到的消息包含对“idd95739d3bc9e44efa1154b3e62a2e121”的意外响应。找不到请求中保留cookie的状态,因此消息不应具有InResponseTo属性。如果执行SP启动的登录时的cookie集丢失,则通常会发生此错误

Saml2Response.cs第153行中的Sustainsys.Saml2.Saml2P.Saml2Response.ReadAndValidateInResponseTo(XmlElement xml,Saml2Id ExpectedResponseTo,IOptions选项)

我们的startup.cs如下所示:

    services.AddAuthentication()
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId("https://adress.to.the.SP.net");
options.SPOptions.Compatibility.UnpackEntitiesDescriptorInIdentityProviderMetadata = true;

options.SPOptions.ReturnUrl = new Uri(@"https://adress.to.a.site.of.our.site.net.net/Saml/Session");

options.SPOptions.ServiceCertificates.Add(new X509Certificate2(@"wwwroot/mycert.pfx"));    // "Sustainsys.Saml2.Tests.pfx"

options.IdentityProviders.Add(
new IdentityProvider(
new EntityId("adress.to.the.IDP.net"), options.SPOptions) 
{
LoadMetadata = true,
MetadataLocation = ("https://adress.to.the.MetadataLocation.xml")

});

IdentityProvider idp;
var x = options.IdentityProviders.TryGetValue(new EntityId(Prov.Idp), out idp);

X509Certificate2 ssoTest = new X509Certificate2(@"wwwroot/sso-test.pem");
idp.SigningKeys.AddConfiguredKey(ssoTest);
});^^^
这是我在检查浏览器的dev tools cokkies选项时看到的:

  • Gett 200 BIGipServer~idm~ipv4 shib测试:!实验对象id:JSESSIONID:shib\U idp\U会话:

  • Post 500.AspNetCore.Antiforgery.w5W7x28NAIs:ARRAffinity:Saml2.t8npwx0u6s6zbc97nzgn\u IL:

  • Gett 200.AspNetCore.Antiforgery.w5W7x28NAIs:ARRAffinity:Saml2.5AYF3RXdiYbN3iolD0HCRu9P:

  • 请使用浏览器开发工具检查重定向到Idp时是否正确设置了Saml2.XYZ cookie,然后检查请求/Saml2/Acs时是否包含该cookie。奇怪的是,当我查看Firefox加载项“SAML Tracker”时,我看到设置了一个ID,这个ID是对我在抛出exeption时得到的回复的响应。@AndersAbel:你能看看流量吗?也可能是请求字符串不太正确吗?RelayState是否正确地往返?它应该与cookie的名称匹配。如果post to/Saml2/Acs中没有RelayState,则将找不到/使用cookie。