我正在尝试在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 请求,IOptions选项) Sustainsys.Saml2.WebSso.SignInCommand.Run(EntityId idpEntityId,字符串 returnPath,HttpRequestData请求,IOptions选项, IDictionary relayData) Sustainsys.Saml2.AspNetCore2.Saml2Handler.ChallengeAsync(AuthenticationProperties 属性)
因此,似乎属性从未与方案链接。
我不确定我是否会沿着正确的道路前进。是否可以通过这种方式动态注册方案?
答案 0 :(得分:1)
事实证明,这只是未实例化的记录器,其他所有选项都很好。我通过添加...解决了这个问题。
options.SPOptions.Logger = new AspNetCoreLoggerAdapter(loggerFactory.CreateLogger<Saml2Handler>());
...当我设置选项时。
loggerFactory
是指Microsoft.Extensions.Logging.ILoggerFactory
的注入实例。