使用 Sustainsys-Saml2 和 ASP.net Core 动态加载 SAML2 IDP

Dynamically load SAML2 IDP using Sustainsys-Saml2 and ASP.net Core

ASP.net 核心 Web 应用程序启动后动态加载 SAML2 IDP 的最佳方法是什么?

到目前为止,我可以使用以下代码在运行时动态添加 SAML2 IDP:

//DI in Constructor 
public ClassName(IAuthenticationSchemeProvider schemeProvider,
    IOptionsMonitorCache<Saml2Options> optionsCache)
{
    _schemeProvider = schemeProvider;
    _optionsCache = optionsCache;
}

public async Task LoadIDP()
{
    ...
    _schemeProvider.AddScheme(new AuthenticationScheme(schemeName, schemeName,typeof(Saml2Handler)));

    _optionsCache.TryAdd(schemeName, new Saml2Options(){...});
}

这行得通,但当应用程序的多个实例在负载平衡环境中 运行 时,我仍在努力动态加载。

是否可以在每次有人尝试使用 SAML2 登录时查询数据库以加载配置?

是的,使用 GetIdentityProviderSelectIdentityProvider 通知。实现它们你可以完全绕过内存收集。请注意,缓存 IdentityProvider 对象是个好主意,尤其是当您让它们加载元数据时,否则您最终会在每次请求时重新加载 Idp 元数据。