2

我正在尝试IAuthenticationSchemeProvider在 ASP.NET Core 和 Sustainsys.Saml2 库中使用动态添加 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 属性)

所以看起来这些属性从未与该方案相关联。

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

4

1 回答 1

3

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

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

...当我设置选项时。

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

于 2019-02-25T10:35:30.477 回答