Spring SAML 扩展 - 以编程方式设置 entityBaseURL

Spring SAML Extension - Programmatically setting entityBaseURL

我正在使用 Spring SAML 扩展,WSO2 IS 作为 IdP。目前,我在 Spring XML 配置中为 MetadataGenerator 设置了 entityBaseURL 属性。目前,由于 entityBaseURL 与服务器名匹配,因此这对单个服务器工作正常。由于我有多个环境(开发、测试和 UAT),我需要以编程方式设置 entityBaseURL,因为每个环境都有不同的服务器名称,并且该服务器名称与 entityBaseURL 道具不匹配。不希望为每个环境重建 WAR 工件。我们将每个环境的配置保存在数据库中。因此可以在运行时读取特定于特定机器堆栈的设置和属性。我想从我们的数据库中读取 entityBaseURL 属性 的服务器名并以编程方式设置它。我应该用我自己的 class 替换 MetadataGenerator 吗?我不清楚 entityBaseURL 属性 在哪里初始化。

我找到了解决这个问题的可行途径。我最终扩展了 MetadataGeneratorFilter class 并覆盖了 getDefaultBaseURL 方法。 getDefaultBaseURL 方法的默认实现是使用在 HTTP 请求中找到的属性来计算值。我更改了此行为以执行数据库查找和 return 存储在数据库中的值。我在这里可能会被空缺,但这确实有效。我能够验证 SAML AuthnRquest 的 AssertionConsumerServiceURL 属性是否设置正确。生成的元数据也是正确的。

注意:entityBaseURL 属性 仍然可以在 Spring 配置中手动设置。如果是,则不使用从 getDefaultBaseURL 方法 return 编辑的值。