HTTPBasicAuthentication en WebService

  Desarrollo

En este post se describe una forma que funciona para autenticar un web service con usuario y contraseña HTTP. La salvedad está en que el Web Service está desarrollado en .Net sobre IIS y el cliente está desarrollado en Java (JAX-WS) con Netbeans.

Como regla general se utiliza una implementación de la clase Authenticator:

class MyAuthenticator extends Authenticator {

  private String user;
  private String password;

  public MyAuthenticator(String user, String password) {
    this.user = user;
    this.password = password;
  }

  @Override
  protected PasswordAuthentication getPasswordAuthentication() {
    PasswordAuthentication auth = new PasswordAuthentication(user, password.toCharArray());
    return auth;
  }
}

Y después de ejecutaría:

...
WSService service = new WSService (new URL(wsdl));
WSServicePort port = service.getWSServicePort();

MyAuthenticator myAuth = new MyAuthenticator("DOMINIO\USUARIO", "PASSWORD");
Authenticator.setDefault(myAuth);

Objetc rtn = port.getMethod();
...

Pero en este caso, la forma que funciona sería:

...
WSService service = new WSService (new URL(wsdl));
WSServicePort port = service.getWSServicePort();

((BindingProvider) port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "DOMINIO\USUARIO");
((BindingProvider) port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "PASSWORD");

Objetc rtn = port.getMethod();
...

 

Algún detalle más del caso en «JAX-WS Authentication problem -javax.xml.ws.WebServiceException Response: ‘401: Unauthorized’«

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.