Skip to content

Instantly share code, notes, and snippets.

Created April 19, 2017 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/bfb6f65194a030a50681af175a9937f5 to your computer and use it in GitHub Desktop.
Save anonymous/bfb6f65194a030a50681af175a9937f5 to your computer and use it in GitHub Desktop.
import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.interceptor.Fault;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.cxf.staxutils.StaxUtils;
import javax.xml.stream.XMLStreamReader;
import java.io.ByteArrayInputStream;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Service {
public void initiateComplianceCheck(String soapMessage) {
SoapMessage soap = null;
try {
soap = setUpMessage(soapMessage.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
createUserNameTokenInterceptor(soap);
}
private SoapMessage setUpMessage(byte[] msg) throws Exception {
SoapMessage message = new SoapMessage(getInstance());
message.setContent(XMLStreamReader.class, StaxUtils.createXMLStreamReader(new ByteArrayInputStream(msg)));
return message;
}
public void createUserNameTokenInterceptor(SoapMessage message) {
Map<String, Object> inProps = new HashMap<String, Object>();
inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
inProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
inProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
@Override
public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException {
final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword("admin");
}
});
WSS4JInInterceptor interceptor = new WSS4JInInterceptor( inProps );
try {
interceptor.handleMessage(message);
} catch(Fault fault) {
System.out.print(fault.getMessage());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment