Я пытаюсь настроить IdentityServer4 для работы с несколькими внешними IdP, которые добавляются динамически с помощью метода IAuthenticationSchemeProvider
AddScheme
.
Я успешно сделал это для OpenIdConnect
IdP, но у меня возникли проблемы с IdP на основе Saml2p
.После этого образца я следовал той же логике для Saml2p:
Injected IOptionsMonitorCache<Saml2pAuthenticationOptions>
и:
if (await _schemeProvider.GetSchemeAsync(scheme) == null)
{
_schemeProvider.AddScheme(new AuthenticationScheme(scheme, scheme, typeof(Saml2pAuthenticationHandler)));
}
else
{
_saml2pOptionsCache.TryRemove(scheme);
}
_saml2pOptionsCache.TryAdd(scheme, samlOptions);
И я получаю исключение:
Unable to resolve service for type 'Rsk.AspNetCore.Authentication.Saml2p.Factories.ISamlFactory``1[IdentityServer4.Saml.Generators.Interfaces.IServiceProviderMetadataGenerator]' while attempting to activate 'Rsk.AspNetCore.Authentication.Saml2p.Saml2pAuthenticationHandler'.
Я не уверен, стоит ли мне устанавливать дополнительные конфигурации, касающиеся Saml, при добавлении схемы, любая помощь приветствуется.
Редактировать: я использую Rsk NuGet для SAML 2.0