CXF SOAP Header Basic Authentication Interceptors Java Without Spring
Here's a great guide to authentication interceptors in Java without using Spring!
Join the DZone community and get the full member experience.
Join For FreeIf you have used the tool:
org.apache.cxf.tools.wsdlto.WSDLToJava
to create your SOAP CXF stubs.
Create a Basic Authentication Interceptor as follows:
package com.bos.services.cxf.interceptors;
import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.ws.security.SecurityConstants;
public abstract class CxfBasicAuthInterceptor extends AbstractOutDatabindingInterceptor {
public CxfBasicAuthInterceptor() {
super(Phase.WRITE);
}
@Override
public void handleMessage(Message outMessage) throws Fault {
outMessage.setContextualProperty(SecurityConstants.USERNAME, getUsername());
outMessage.setContextualProperty(SecurityConstants.PASSWORD, getPassword());
}
public abstract String getUsername();
public abstract String getPassword();
}
To use the Basic Authetication Interceptor:
QName serviceName = new QName("http://bos.asoap.service.com/v1.0/ServiceApi", "BosWS");
URL wsdlURL = BosWS.WSDL_LOCATION;
BosWS ss = new BosWS(wsdlURL, serviceName);
IBosWS service = ss.getBasicHttpBindingIBosWS();
Client client = ClientProxy.getClient(service);
client.getOutInterceptors().add(new CxfBasicAuthInterceptor() {
@Override
public String getUsername() {
return configService.getWSUserName();
}
@Override
public String getPassword() {
return configService.getWSPassword();
}
});
SOAP
Web Protocols
authentication
Java (programming language)
Opinions expressed by DZone contributors are their own.
Comments