Estoy tratando de asegurar mi cliente WS a ser capaz de llamar a la WS.

Mi código es este:

            SendSmsService smsService = new SendSmsService();
SendSms sendSMS = smsService.getSendSms();  
BindingProvider stub = (BindingProvider)sendSMS;

//Override endpoint with local copy of wsdl.
String URL ="";//here is the wsdl url
Map<String,Object> requestContext = stub.getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, URL);

//Set usernametoken
URL fileURL = loader.getResource("client-config.xml");
File file = new File(fileURL.getFile());

FileInputStream clientConfig = null;
try {
 clientConfig = new FileInputStream(file);
} catch (FileNotFoundException e) {
 e.printStackTrace();
}

XWSSecurityConfiguration config = null;
try {
 config = SecurityConfigurationFactory.newXWSSecurityConfiguration(clientConfig);
} catch (Exception e) {
 e.printStackTrace();
 log.warn("Exception: "+e.getMessage());
}
requestContext.put(XWSSecurityConfiguration.MESSAGE_SECURITY_CONFIGURATION, config);

//Invoke the web service

 String requestId = null;
 try {
  requestId = sendSMS.sendSms(addresses, senderName, charging, message,   receiptRequest);
 } catch (PolicyException e) {
  //TODO Auto-generated catch block
  e.printStackTrace();
 } catch (ServiceException e) {
  //TODO Auto-generated catch block
  e.printStackTrace();
 }

y el archivo de configuración se parece a esto:

<xwss:JAXRPCSecurity xmlns:xwss="http://java.sun.com/xml/ns/xwss/config"   optimize="true">
 <xwss:Service>
  <xwss:SecurityConfiguration dumpMessages="true"
   xmlns:xwss="http://java.sun.com/xml/ns/xwss/config">
    <xwss:UsernameToken name="username" password="password>
  </xwss:SecurityConfiguration>
 </xwss:Service>
 <xwss:SecurityEnvironmentHandler>
  util.SecurityEnvironmentHandler
</xwss:SecurityEnvironmentHandler>
</xwss:JAXRPCSecurity>

La SecurityEnviromentHandler es un muñeco de la clase que implementa javax.de seguridad.auth.de devolución de llamada.CallbackHandler.

De autenticación debe estar en conformidad con el Oasis de Seguridad en Servicios Web Token de nombre de Usuario Perfil de 1.0.

Pero estoy recibiendo constantemente «encabezado de Seguridad no válido error».

A donde voy mal, ¿alguien puede decirme.

He utilizado wsimport(JAX_WS 2.1 para generar las clases para mi cliente)

Nota:la Única cosa que sé acerca de este WS es la dirección URL de WSDL y usuario&pase para la autenticación

InformationsquelleAutor trivunm | 2011-01-04

1 Comentario

  1. 4

    SOLUCIÓN

    He resuelto el problema. La cosa que está mal es que client-config.xml el archivo de la causa no sé cómo configurarlo correctamente. Me encontré con este ejemplo y lo utilizó:

    http://www.javadb.com/using-a-message-handler-to-alter-the-soap-header-in-a-web-service-client

    Acaba de copiar los 2 clases en el enlace en mis proyectos de la estructura y los llamó, algo como esto:

    SendSmsService smsService = new SendSmsService();
    HeaderHandlerResolver handlerResolver = new HeaderHandlerResolver();
    smsService.setHandlerResolver(handlerResolver);
    SendSms sendSMS = smsService.getSendSms();

    Ahora funciona perfectamente!

    • Hola, sería mejor poner la respuesta aquí, más que en la pregunta.

Dejar respuesta

Please enter your comment!
Please enter your name here