旧版 Spring Security SAML 应用可以使用 HTTPMetadataProvider 从服务器进程中获取身份提供者的元数据。这次对外下载使用提供给元数据提供者的 HTTP 客户端。

如果应用使用 Spring Security SAML 1.0.x/OpenSAML 2 的配置方式,请在注入之前配置它的 Apache Commons HttpClient:

org.apache.commons.httpclient.HttpClient metadataHttpClient =
    new org.apache.commons.httpclient.HttpClient();
metadataHttpClient.getHostConfiguration()
    .setProxy("proxy.example", 8080);

将该已配置的对象作为 org.opensaml.saml2.metadata.provider.HTTPMetadataProvider 的 HTTP 客户端构造参数传入,并与现有的定时器和元数据 URL 一起传入。在 XML 配置中,被引用的客户端 bean 必须正是这个已配置的实例。

保留提供者现有的解析器池、刷新配置以及外围的元数据管理器。更改路由并不替代这些职责。

元数据 URL 仍是身份提供者的 URL。代理主机属于 HTTP 客户端。对于已批准且可公开访问的元数据 URL,在允许公共中间人且不保留代理凭据的前提下,可以用 HTTP 代理列表中的 HTTP 候选来填写该客户端的主机和端口。这是服务端的获取路径:浏览器能成功跳转到身份提供者,并不说明应用服务器能在自身的网络限制下下载或刷新元数据。

仅对本文提到的旧版类使用此配置。现代 Spring Security saml2 支持使用另一套 API,为旧扩展编写的 bean 不能与其当前的元数据配置互换。

相关文章