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

时间:2019-02-22 16:14:01

标签: asp.net-core saml-2.0 sustainsys-saml2

我正在尝试在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   属性)

因此,似乎属性从未与方案链接。

我不确定我是否会沿着正确的道路前进。是否可以通过这种方式动态注册方案?

1 个答案:

答案 0 :(得分:1)

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

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

...当我设置选项时。

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