2017-03-07 76 views
1

我使用WSO2 IS的Spring SAML扩展作为IdP。目前,我在Spring XML配置中为MetadataGenerator设置了entityBaseURL属性。目前,由于entityBaseURL与服务器名称匹配,所以这对于单个服务器来说工作得很好。因为我有几个环境(dev,test和UAT),所以我需要以编程方式设置entityBaseURL,因为每个环境都有不同的服务器名称,并且servername与entityBaseURL prop不匹配。为每个环境重建WAR伪像是不可取的。我们将每个环境的配置保存在数据库中。因此,可以在运行时读取特定堆栈机器的特定设置和属性。我想从我们的数据库中读取entityBaseURL属性的servername并以编程方式进行设置。我应该用自己的课程替换MetadataGenerator吗?我不清楚entityBaseURL属性在哪里初始化。Spring SAML扩展 - 以编程方式设置entityBaseURL

回答

1

我找到了解决这个问题的可行路径。我最终扩展了MetadataGeneratorFilter类并覆盖了getDefaultBaseURL方法。 getDefaultBaseURL方法的默认实现是使用HTTP请求中找到的属性来计算值。我改变了这种行为来进行数据库查找并返回存储在数据库中的值。我可以在这里选址很短,但这确实有效。我能够验证SAML AuthnRquest的AssertionConsumerServiceURL属性是否已正确设置。生成的元数据也是正确的。

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