【问题标题】:How to authenticate a Web Service Client with JAX-WS / SOAP如何使用 JAX-WS / SOAP 对 Web 服务客户端进行身份验证
【发布时间】:2012-12-22 15:34:07
【问题描述】:

我是 Web 服务的新手,并尝试了一些教程。但是当我尝试访问 HTTPS 安全 SOAP Web 服务时,我偶然发现了巡逻。我可以使用我的浏览器和 Netbeans 访问 WSDL,并使用我从提供商那里恢复的登录名/密码。

Netbeans 生成服务/模式类(通过身份验证),我在 Glassfish 3.1.2 上运行我的客户端。我添加了一个 Servlet 来访问该服务。但我在尝试访问服务和WSDL 时收到 HTTP 响应代码:401 (=Unauthorized)。该服务确实连接到HTTPS,但错误告诉HTTP

添加用户名/密码以访问 Web 服务的正确方法是什么?

Servlet 的服务提供者

private static LogicalModel pullpullEnterpriseService() {
    pullEnterpriseService service = new pullEnterpriseService();        
    ClientPullSoapBinding port = service.getClientPullSoapBinding();        

    BindingProvider prov = ((BindingProvider)port);
    prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "myuser");
    prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");

    return port.getDataModel();
}

我尝试在 SOAP 标头中提供用户/密码,但结果相同

    ...
    Map<String, Object> req_ctx = ((BindingProvider)port).getRequestContext();        

    Map<String, List<String>> headers = new HashMap<String, List<String>>();
    headers.put("Username", Collections.singletonList("myuser"));
    headers.put("Password", Collections.singletonList("mypassword"));
    req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
    ...

我看过这些帖子,但它们并没有解决我的问题:

How do I add a SOAP Header using Java JAX-WS

http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/

【问题讨论】:

    标签: java web-services jakarta-ee servlets


    【解决方案1】:

    您可以尝试在您的项目中本地存储 WSDL。

    查看Consuming a Web Service with Java 6 and JAX-WS - Wiki - Confluence 中的示例。

    然后您可以使用 Specifying the Endpoint Address and HTTP Basic Authorization 部分中的方式,就像您问题中的第一个代码一样。

    希望对你有所帮助。

    【讨论】:

    • 这行得通,但现在我必须手动检查 WSDL 是否更改。以防架构更改时出现运行时错误。
    • 答案中的 Link 现在已经死了。
    • 将链接替换为archive.org 备份。注意:代码 sn-ps 不会显示,但仍可在 html 源代码的 CDATA 部分中使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多