1

仅适用于 ComponentSpace 用户!

我需要在启动后从数据库中添加提供者配置。没有关于此主题的有用文档。以下是我发现并尝试但没有成功的一些建议。

有没有人成功地使用 ComponentSpace 动态添加身份提供者配置?

他们论坛上的帖子建议注入 ComponentSpace.Saml2.Configuration。我的控制器中的SamlConfigurations。问题是 SamlConfigurations 为空,尽管我已经在启动时加载了工作配置。

https://componentspace.com/Forums/7950/

我可以早在 Startup.cs 的应用程序配置中访问数据库。但是 saml 已经使用services.AddSaml添加到 ConfigureServices 中,并且没有明显的方法来更新它。

4

1 回答 1

3

推荐的方法是实现 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。

于 2019-09-18T00:21:00.733 回答