Ich versuche, einen SOAP-Web-Service, der Sicherheit erfordert mit CXF in Mule konsumieren. Ich habe es funktioniert, aber ich muss das Passwort in eine Konfigurationsdatei legen. Ich kann nicht finden, wie man das Kennwort von der Konfiguration zur Fluß-/Rückrufklasse übergibt. Mein Flow sieht wie folgt aus:Consume SOAP-Web-Service mit Sicherheit in Mule-Fluss
<cxf:jaxws-client
clientClass="za.co.iam.service.identitymanager.intf._1.IdentityManager_Service"
port="IdentityManager"
wsdlLocation="classpath:/wsdl/IdentityManager.wsdl"
operation="CheckUserId" doc:name="CXF">
<cxf:ws-security>
<cxf:ws-config>
<cxf:property key="action" value="UsernameToken Timestamp"/>
<cxf:property key="user" value="${security.username}"/>
<cxf:property key="passwordType" value="PasswordText"/>
<cxf:property key="passwordCallbackClass" value="za.co.iam.IamPasswordCallback"/>
</cxf:ws-config>
</cxf:ws-security>
</cxf:jaxws-client>
<outbound-endpoint address="${iam.webservice}" doc:name="Generic"/>
Die IamPasswordCallback
Klasse:
public class IamPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
{
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword("********");
}
}
Dies funktioniert gut, aber ich muss auch das Passwort in der Konfigurationsdatei setzen. Normalerweise mache ich eine Bean aus IamPasswordCallback
und setze den Wert im Fluss und benutze die Bean für den Callback-Handler im CXF-Setup, aber ich weiß nicht, wie diese Konfiguration aussehen soll. Die Alternative ist, die Eigenschaftendatei in der IamPasswordCallback
Klasse zu laden, aber ich glaube, dass das nicht empfohlen wird.
Das scheint nicht zu funktionieren. Die Eigenschaft scheint keine Zeichenfolge zu sein? 'java.lang.ClassCastException: za.co.entityapi.IamPasswordCallback kann nicht auf java.lang.String gegossen werden \t bei org.apache.ws.security.handler.WSHandler.getString (WSHandler.java:1220) \t bei org.apache.ws.security.handler.WSHandler.getCallbackHandler (WSHandler.java:923) \t bei org.apache.ws.security.handler.WSHandler.getPasswordCallbackHandler (WSHandler.java:939) ' –
Ich benutze Mule 3.6. 2 BTW –
Oh okay .. das funktionierte in 3.4. Ich werde es ausprobieren und Sie wissen lassen. – jvas