Wie ändere ich HTTP-Header für eine JAX-WS-Antwort in CXF?
Ich habe an der Entwicklung von CXF-Webdiensten gearbeitet, die sich hinter einem Sicherheitsproxy befinden und vor dem Aufrufen des Dienstes nach der HTTP-Basisauthentifizierung fragen. Diese Dienste kommunizieren untereinander und erfordern eine Authentifizierung sowohl für die Anforderung als auch für die Antwort.
Bisher konnte ich die HTTP-Basisauthentifizierung über den HTTPConduit für die Anforderung wie folgt festlegen:
Client client = ClientProxy.getClient(port);
HTTPConduit conduit = (HTTPConduit) client.getConduit();
AuthorizationPolicy authorizationPolicy = new AuthorizationPolicy();
authorizationPolicy.setUserName(username);
authorizationPolicy.setPassword(password);
authorizationPolicy.setAuthorizationType("Basic");
conduit.setAuthorization(authorizationPolicy);
Die obige Methode wird bei jedem Aufruf der Dienstmethode aufgerufen und ich erhalte korrekte eingehende Nachrichten in Form von
INFO: Inbound Message
----------------------------
ID: 1
Address: http://someURL/someService?wsdl
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml; charset=UTF-8
Headers: {Accept=[*/*], Authorization=[Basic {TOKEN}],
cache-control=[no-cache], connection=[keep-alive],
Content-Length=[735], content-type=[text/xml; charset=UTF-8],
pragma=[no-cache], ...}
Payload: <soap:Envelope>...</soap:Envelope>
--------------------------------------
Die Antwort enthält jedoch nicht die erforderlichen Header
INFO: Outbound Message
---------------------------
ID: 2
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope/">...</soap:Envelope>
--------------------------------------
Wie kann ich HTTP-Header für Antworten ändern? ich habe es versucht
((BindingProvider)port).getResponseContext().put(
MessageContext.HTTP_RESPONSE_HEADERS,
Collections.singletonMap("Authentication",
Collections.singletonList("Basic "+token)));
ohne das gewünschte Ergebnis zu erzielen.