¿Cómo puedo consumir un servicio web protegido con autenticación básica HTTP utilizando el marco de CXF?

StackOverflow https://stackoverflow.com/questions/705728

  •  22-08-2019
  •  | 
  •  

Pregunta

He intentado conseguir que funcione mediante el CXF Guía del usuario , pero no he tenido suerte.

Estoy intentando llamar al servicio web utilizando el código de Java.

¿Fue útil?

Solución

Esto está cubierto por la especificación JAX-WS. Básicamente, establecer el nombre de usuario / contraseña como propiedades en el contexto de la petición:

((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.USERNAME_PROPERTY, "joe");
((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.PASSWORD_PROPERTY, "pswd");

El tiempo de ejecución de los pone en la cabecera HTTP.

Otros consejos

Puede proporcionar su propia Authenticator. Esa manera de que funcione si el WSDL en sí está protegido por la autenticación básica HTTP.

@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
static XxxService service;

public static void main(String[] args) {

    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "password".toCharArray());
        }
    });

    service = new XxxService();
    Xxx port = service.getXxxPort();

    // invoke webservice and print response
    XxxResponse resp = port.foo();
    System.out.println(resp.toString());

}

Hay una manera mucho mejor:

cuando se genera a partir de WSDL Java, la opción de añadir "-exsh verdadero":

wsdl2java -exsh cierto -p edu.sharif.ce http://wsdl.ir/WebServices /WebService.asmx?WSDL

y añadir UserCredential cuando se utiliza:

UserCredentials user = new UserCredentials();
user.setUserid("user");
user.setPassword("pass");

ResearchWebService_Service service = new ResearchWebService_Service();
ResearchWebService port = service.getResearchWebService();
port.addNewProject(newProject, user);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top