gpt4 book ai didi

空 : Object reference during AssertionConsumerService => saml2AuthnResponse. CreateSession

转载 作者:行者123 更新时间:2023-12-04 10:18:48 24 4
gpt4 key购买 nike

我在 MVC.NET(4.7.2 框架)中运行 ITFoxtec.Identity.Saml2.Mvc(v4.5.0)。
我的 IdP 说已成功通过身份验证...重定向回来...
但是当我从 IdP 得到我的回复时 - 我在这个调用中得到了一个空异常。不幸的是,它没有给我一个行号或任何有助于追踪它的东西。

saml2AuthnResponse.CreateSession()

我尝试了多种构建 nuget 包的方法,以使其从失败的地方注销 - 但到目前为止,在从包外部使用/引用时还没有运气。我在 web.config 中设置了如下其他设置:
<add key="Saml2:CertificateValidationMode" value="PeerOrChainTrust" />
<add key="Saml2:RevocationMode" value="NoCheck" />

我的 AssertionConsumerService 与您网站上的示例几乎相同:
public ActionResult AssertionConsumerService()
{
var binding = new Saml2PostBinding();
var saml2AuthnResponse = new Saml2AuthnResponse(config);

binding.Unbind(Request.ToGenericHttpRequest(), saml2AuthnResponse);
saml2AuthnResponse.CreateSession(claimsAuthenticationManager: new SAMLDefaultClaimsAuthenticationManager());

var returnUrl = binding.GetRelayStateQuery()[relayStateReturnUrl];
return Redirect(string.IsNullOrWhiteSpace(returnUrl) ? Url.Content("~/") : returnUrl);
}

在 Saml2ResponseExtensions.cs CreateSession() ln.19 上的 printf 调试中
我可以说它(可能?)不会在这一行之前抛出(因为我可以复制+粘贴在我的外部范围内重新创建所有前面的变量,没有问题)。
var sessionSecurityToken = lifetime.HasValue 
? new SessionSecurityToken(transformedPrincipal, lifetime.Value)
...

@AndersRevsgaard 有什么想法吗?

最佳答案

我将其跟踪到这一行,这会引发 Null ref 错误:

FederatedAuthentication.SessionAuthenticationModule.AuthenticateSessionSecurityToken(sessionSecurityToken, true);

尽管仍然很神秘,但已通过以下答案解决:
What makes the FederatedAuthentication.SessionAuthenticationModule return NULL?
通过向 web.config 添加一些部分。
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
<system.web>
<authentication mode="None" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</modules>
</system.webServer>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
</federationConfiguration>
</system.identityModel.services>

您可以查看 ITFoxTec 测试 web.config 以获取完整示例:
https://github.com/ITfoxtec/ITfoxtec.SAML2/blob/master/WebAppTest/Web.config

关于空 : Object reference during AssertionConsumerService => saml2AuthnResponse. CreateSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com