使用ASP.NET Core中的Sustainsys.Saml2动态添加SAML2身份验证提供程序

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

我正在尝试使用ASP.NET Core和Sustainsys.Saml2库中的IAuthenticationSchemeProvider动态添加SAML2身份验证方案:

schemeProvider.AddScheme(new AuthenticationScheme("myAuthScheme", "myAuthScheme", typeof(Saml2Handler)));

随着该计划,我需要配置与它一起的Saml2Options。我试图使用IOptionsMonitorCache<Saml2Options>这样做:

samlOptionsCache.TryAdd("myAuthScheme", options);

当我尝试使用此方案进行身份验证时,我收到以下错误:

NullReferenceException:未将对象引用设置为对象的实例。 Sustainsys.Saml2.WebSso.Saml2Urls..ctor(HttpRequestData request,IOptions options)Sustainsys.Saml2.WebSso.SignInCommand.Run(EntityId idpEntityId,string returnPath,HttpRequestData request,IOptions options,IDictionary relayData)Sustainsys.Saml2.AspNetCore2.Saml2Handler。 ChallengeAsync(AuthenticationProperties属性)

所以看起来这些属性永远不会与该方案相关联。

我不确定我是否会走这条路。是否可以以这种方式动态注册方案?

asp.net-core saml-2.0 sustainsys-saml2
1个回答
1
投票

事实证明它只是没有实例化的记录器,所有其他选项都很好。我通过添加...解决了这个

options.SPOptions.Logger = new AspNetCoreLoggerAdapter(loggerFactory.CreateLogger<Saml2Handler>());

...当我设置选项时

loggerFactory指的是Microsoft.Extensions.Logging.ILoggerFactory的注射实例。

© www.soinside.com 2019 - 2024. All rights reserved.