使用 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 登录时查询数据库以加载配置?
是的,使用 GetIdentityProvider
和 SelectIdentityProvider
通知。实现它们你可以完全绕过内存收集。请注意,缓存 IdentityProvider 对象是个好主意,尤其是当您让它们加载元数据时,否则您最终会在每次请求时重新加载 Idp 元数据。
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 登录时查询数据库以加载配置?
是的,使用 GetIdentityProvider
和 SelectIdentityProvider
通知。实现它们你可以完全绕过内存收集。请注意,缓存 IdentityProvider 对象是个好主意,尤其是当您让它们加载元数据时,否则您最终会在每次请求时重新加载 Idp 元数据。