如何使用使用 CXF 框架的受 HTTP 基本身份验证保护的 Web 服务?

2022-09-03 04:14:37

我试图使用CXF用户指南让它工作,但我没有运气。

我正在尝试使用java代码调用Web服务。


答案 1

JAX-WS 规范对此进行了介绍。基本上,将用户名/密码设置为请求上下文的属性:

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

运行时将它们放入 HTTP 标头中。


答案 2

您可以提供自己的身份验证器。这样,如果 WDSL 本身受基本 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());

}

推荐