Proxy für SAML-Metadaten-Downloads in altem Spring Security konfigurieren
Konfigurieren Sie den HTTP-Client, der in einen alten Spring Security SAML HTTPMetadataProvider injiziert wird, für Metadaten-Downloads auf Serverseite.
Eine alte Spring Security SAML-Anwendung kann Metadaten des Identitätsanbieters aus dem Serverprozess mit HTTPMetadataProvider abrufen. Dieser ausgehende Download verwendet den HTTP-Client, der dem Metadaten-Provider übergeben wird.
Für eine Anwendung im Konfigurationsstil Spring Security SAML 1.0.x/OpenSAML 2 konfigurieren Sie deren Apache Commons HttpClient, bevor er injiziert wird:
org.apache.commons.httpclient.HttpClient metadataHttpClient =
new org.apache.commons.httpclient.HttpClient();
metadataHttpClient.getHostConfiguration()
.setProxy("proxy.example", 8080);Übergeben Sie dieses konfigurierte Objekt als Konstruktorargument des HTTP-Clients von org.opensaml.saml2.metadata.provider.HTTPMetadataProvider, zusammen mit dem vorhandenen Timer und der Metadaten-URL. In einer XML-Konfiguration muss die referenzierte Client-Bean genau diese konfigurierte Instanz sein.
Behalten Sie den vorhandenen Parser-Pool des Providers, die Aktualisierungskonfiguration und den umgebenden Metadaten-Manager bei. Das Ändern der Route ersetzt diese Zuständigkeiten nicht.
Die Metadaten-URL bleibt die URL des Identitätsanbieters. Der Proxy-Host gehört an den HTTP-Client. Für eine genehmigte, öffentlich erreichbare Metadaten-URL kann ein HTTP-Kandidat aus der HTTP-Proxy-Liste Host und Port dieses Clients füllen, wenn öffentliche Vermittler zulässig sind und keine Proxy-Anmeldedaten gespeichert werden. Dies ist ein Abrufpfad auf Serverseite: eine erfolgreiche Browser-Weiterleitung zum Identitätsanbieter belegt nicht, dass der Anwendungsserver Metadaten über seine eigenen Netzwerkbeschränkungen herunterladen oder aktualisieren kann.
Verwenden Sie diese Konfiguration nur für die hier genannten alten Klassen. Die moderne Spring Security saml2-Unterstützung verwendet eine andere API, und eine für die alte Erweiterung geschriebene Bean ist nicht mit ihrer aktuellen Metadatenkonfiguration austauschbar.