推荐的方法是实现 ISamlConfigurationResolver 接口,如配置指南中所述。
https://www.componentspace.com/Forums/8234/Configuration-Guide
“SAML 配置选项”部分概述了何时使用每种方法的替代方案和建议。
“实现 ISamlConfigurationResolver”部分描述了这个接口并包括几个示例实现。您可以将 SAML 配置存储在自定义数据库中。您的 ISamlConfigurationResolver 实现将根据请求从该数据库中检索信息。作为 SAML SSO 或 SLO 流的一部分,按需请求配置。
请注意,当前版本的文档建议使用 services.TryAddScoped 来指定您的实现。这要求您在调用 services.AddSaml 之前执行此操作,否则从 appsettings.json 读取的默认 ISamlConfigurationResolver 实现仍然处于活动状态。更好的方法是调用 services.AddScoped();
关于您尝试的方法,您可以通过编程方式指定 SamlConfigurations。如果您查看我们发布的 ExampleIdentityProvider 和 ExampleServiceProvider 项目,它们的 Startup 类包含一个 ConfigureSaml 方法。您可以调用 services.AddSaml(config => ConfigureSaml(config)),而不是调用 services.AddSaml(Configuration.GetSection("SAML")),它会从 appettinsg.json 添加 SAML 配置。
但是,我认为对于您的场景,最好实现 ISamlConfigurationResolver。