I've got a DII client coded up and everything works as expected. However, now I am
trying to test my WS-Security setup. My JBoss server (4.0.4 with JBossWS 1.0.2) requires
WS-Security signatures on all incoming SOAP messages. It accurately denies my invocations
if I don't sign my messages, but now I want to make it accept my messages. I have
read elsewhere that I need to configure a handler to sign my outgoing messages. I have
tried to do this in the code below:
package com.mycompany.client.test.ws;
|
| import ...
|
| public class WSTestCase extends TestCase {
| private String testDescription = null;
|
| // Possible Outputs
| private String exceptionThrown = null;
|
| public void testPlanStep1() throws MalformedURLException, ServiceException {
| go(getInput());
| }
|
| private void go(Echo request) throws ServiceException, MalformedURLException {
| try {
| ClientStuffEndpoint clientStuffEndpoint = getEndpoint();
| EchoResponse echoResponse = clientStuffEndpoint.echo(request);
|
| ClientStuffReply clientStuffReply = echoResponse.getResult();
| System.out.println(clientStuffReply.getAuditId());
| } catch (Exception e) {
| e.printStackTrace();
| assertTrue(false);
| }
| }
|
| private ClientStuffEndpoint getEndpoint() throws MalformedURLException,
ServiceException, InvalidRequestException, SystemUnavailableException, RemoteException {
| ServiceFactoryImpl factory = new ServiceFactoryImpl();
| ClassLoader cl = Thread.currentThread().getContextClassLoader();
| URL wsdlLocation = cl.getResource("wsdl/ClientStuff.wsdl");
| URL mappingLocation = cl.getResource("client-mapping.xml");
| QName serviceName = new
QName("http://client.mycompany.com/clientstuff/1.0", "ClientStuff");
| ServiceImpl service = (ServiceImpl) factory.createService(wsdlLocation,
serviceName, mappingLocation);
| setupHandlerRegistry(service);
| return (ClientStuffEndpoint) service.getPort(ClientStuffEndpoint.class);
| }
|
| private Echo getInput() {
| Echo echoInput = new Echo();
| ClientStuffRequest clientStuffRequest = new ClientStuffRequest();
| clientStuffRequest.setAuditId("eggie");
| echoInput.setClientStuffRequest_1(clientStuffRequest);
|
| return echoInput;
| }
|
| private void setupHandlerRegistry(ServiceExt service) {
| List<HandlerInfo> clientHandlerChain = new
ArrayList<HandlerInfo>();
| HandlerInfo handler = new HandlerInfo();
| handler.setHandlerClass(WSSecurityHandlerOutbound.class);
| clientHandlerChain.add(handler);
| QName securityName = new QName(org.jboss.ws.wsse.WSS_SOAP_NS,
"ClientStuffEndpointPort");
| service.getDynamicHandlerRegistry().setHandlerChain(securityName,
clientHandlerChain);
| }
| }
|
Unfortunately my messages still aren't being signed.
I was unsure about what to put on the line QName securityName = new
QName(org.jboss.ws.wsse.WSS_SOAP_NS, "ClientStuffEndpointPort"); and I think
this might be the cause of the problem. Can anyone advise me of the correct values here?
I have tried several different values from the org.jboss.ws.wsse package.
Any help would be greatly appreciated. Thanks!
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3962009#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...