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 编辑的值。
我正在使用 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 编辑的值。