Получение файла WSDL из защищенного сервиса - PullRequest
2 голосов
/ 30 сентября 2010

У меня есть веб-сервис, разработанный с помощью JAX-WS. Я защитил веб-сервис с помощью BASIC-аутентификации, настроенной в Tomcat.

Когда я пытаюсь получить доступ к веб-службе с помощью клиента Java, мне сначала нужно создать порт, а затем указать учетные данные следующим образом:

CustomerServiceClient customerServiceClient = new CustomerServiceBottomUpService(); //1
CustomerService customer = customerServiceClient.getCustomerServicePort(); //2

Map<String, Object> context = ((BindingProvider) customer).getRequestContext(); //3
context.put(BindingProvider.USERNAME_PROPERTY, "kermit"); //4
context.put(BindingProvider.PASSWORD_PROPERTY, "thefrog"); //5

У меня проблема в том, что после строки 1 я получаю сообщение об ошибке авторизации (HTTP 401), поскольку я, очевидно, еще не предоставил серверу учетные данные.

Я создаю клиентские артефакты из WSDL-сервера, поэтому возникает проблема с аутентификацией при создании службы, и я не хочу, чтобы мои клиенты хранили WSDL локально, поскольку это просто раздражает их. Как я могу обойти эту проблему?

1 Ответ

2 голосов
/ 30 сентября 2010

BindingProvider.USERNAME_PROPERTY, BindingProvider.PASSWORD_PROPERTY используются в основном для запросов на обслуживание. Когда вы создаете экземпляр Service, он выбирает WSDL, а сервер возвращает 401. Вы можете попробовать любое из следующих решений:

  • Используйте java.net.Authenticator класс в вашем клиентском приложении.
  • Предоставить локальный доступ к WSDL с использованием каталога.
  • Настройте web.xml для разрешения запросов GET без аутентификации.

Ссылка java.boot.by

...