【问题标题】:Retrieving WSDL file from secure service从安全服务中检索 WSDL 文件
【发布时间】:2010-09-30 19:18:21
【问题描述】:

我有一个使用 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 存储在本地,因为这对他们来说很烦人。我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

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

    参考java.boot.by

    【讨论】:

    • 感谢您的回复。不是 Authenticator 或目录的忠实粉丝,并且始终使用 GET 访问该服务。可以修改为只接受 POST HTTP 请求吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2016-02-12
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多