从安全服务检索WSDL文件

时间:2010-09-30 19:18:21

标签: java web-services jax-ws basic-authentication

我有一个使用JAX-WS开发的Web服务。我已使用在Tomcat中配置的BASIC身份验证来保护Web服务。

当我尝试使用Java客户端访问Web服务时,我首先需要创建端口,然后指定凭据,如下所示:

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 个答案:

答案 0 :(得分:2)

BindingProvider.USERNAME_PROPERTY,BindingProvider.PASSWORD_PROPERTY主要用于服务请求。当您实例化Service时,它会获取WSDL并且服务器返回401.您可以尝试以下任何一种解决方案:

  
      
  • 在客户端应用程序中使用java.net.Authenticator类。
  •   
  • 使用目录提供对WSDL的本地访问。
  •   
  • 配置web.xml以允许GET请求而无需身份验证。
  •   

参考java.boot.by