Динамическое добавление поставщика проверки подлинности SAML2 с использованием Sustainsys.Saml2 в ASP.NET Core

Я пытаюсь динамически добавить схему аутентификации SAML2, используя IAuthenticationSchemeProvider в ASP.NET Core и библиотеке Sustainsys.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 параметры. ChallengeAsync(свойства AuthenticationProperties)

Таким образом, похоже, что свойства никогда не связаны со схемой.

Я не уверен, что иду по правильному пути с этим. Можно ли динамически зарегистрировать схему таким образом?

1 ответ

Решение

Оказывается, это был просто регистратор, который не был создан, все остальные варианты были в порядке. Я решил это, добавив...

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

... когда я настраивал параметры.

loggerFactory относится к введенному экземпляру Microsoft.Extensions.Logging.ILoggerFactory,

Другие вопросы по тегам