JAVA-11 - SOAP 标头请求中的安全信息不会传递给 web 服务

以下代码在使用 JAVA-8 编译时运行良好,但在 JAVA-11 中编译时不起作用。 我的项目是一个 gradle 构建项目。在这个项目中,我调用了一个在 SOAP 标头中传递身份验证详细信息的 Web 服务。

当我在 Wireshark 中跟踪项目时,我注意到在 JAVA-8 编译版本和 JAVA-11 编译版本中的区别在于 SOAP Header 没有添加到 JAVA-11 编译版本中的请求中,因此在server.log 以及来自 Web 服务的响应失败,因为标头部分中缺少身份验证详细信息。

服务器日志

2021-07-22 09:15:20,585 WARNING [com.sun.xml.ws.wspolicy.EffectiveAlternativeSelector] (default task-1) WSP0075: Policy assertion "{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}SupportingTokens" was evaluated as "UNKNOWN".
2021-07-22 09:15:20,585 WARNING [com.sun.xml.ws.wspolicy.EffectiveAlternativeSelector] (default task-1) WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".

以下是我使用的两个依赖项:-

[group: 'com.sun.xml.bind',name: 'jaxb-impl',version: '2.3.4'],[group: 'com.sun.xml.ws',name: 'jaxws-ri',version: '2.3.4']

SOAP Header 在下面的类中创建 -

import javax.xml.ws.BindingProvider;

public abstract class AbstractHeaderProxy {
    protected String endpoint;
    protected static final String ENDPOINT_ADDRESS = "javax.xml.ws.service.endpoint.address";
    public static final String WS_username = "ws-security.username";
    public static final String WS_PASSWORD = "ws-security.password";

    public void setupPort() {
        final PropertyConfigData commnProps = getcommonProperties();
        final String endpoint = "http://10.20.9.44:80/INVDetails/INVDetailsV2?WSDL";
        final String username = "abc";
        final String password = "abc123";

        getPortBindingProvider().getRequestContext().put(ENDPOINT_ADDRESS,endpoint);
        getPortBindingProvider().getRequestContext().put(WS_username,username);
        getPortBindingProvider().getRequestContext().put(WS_PASSWORD,password);
    }

    public abstract String getEndPoint();

    public abstract BindingProvider getPortBindingProvider();
}

JAVA-11 是否缺少某些依赖项? 或者有没有办法以不同的方式创建这个 SOAP 标头,以便它附加到请求中?

wuzesc 回答:JAVA-11 - SOAP 标头请求中的安全信息不会传递给 web 服务

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/29449.html

大家都在问