Как использовать веб-сервис, защищенный базовой HTTP-аутентификацией с использованием инфраструктуры CXF? - PullRequest
15 голосов
/ 01 апреля 2009

Я пытался заставить его работать, используя CXF Руководство пользователя , но мне не повезло.

Я пытаюсь вызвать веб-сервис с использованием кода Java.

Ответы [ 3 ]

25 голосов
/ 01 апреля 2009

На это распространяется спецификация JAX-WS. По сути, укажите имя пользователя / пароль в качестве свойств в контексте запроса:

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

Среда выполнения помещает их в заголовок HTTP.

7 голосов
/ 28 октября 2011

Вы можете предоставить свой собственный Аутентификатор. Таким образом, он будет работать, если сам 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());

}
6 голосов
/ 19 февраля 2011

Есть намного лучший способ:

при генерации Java из WSDL добавьте опцию "-exsh true":

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

и добавьте UserCredential при использовании:

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

ResearchWebService_Service service = new ResearchWebService_Service();
ResearchWebService port = service.getResearchWebService();
port.addNewProject(newProject, user);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...