wildfly 16 - UT 010053:没有机密端口可用于重定向当前请求

Posted

技术标签:

【中文标题】wildfly 16 - UT 010053:没有机密端口可用于重定向当前请求【英文标题】:wildlfy 16 - UT010053: No confidential port is available to redirect the current request 【发布时间】:2021-01-19 00:17:15 【问题描述】:

我的设置:一个 https 负载均衡器,带有在域模式下运行的 http wildflynodes 通过 https 负载均衡器进入应用程序节点:443 到 8080 & 8180 - 应用程序转发工作,应用程序的所有功能都可以使用。

这个问题只出现在 SOAP-Webservice 上。

wsdl 可以在 https//loadbalancerurl:443/.. 下访问,问题来自于访问 webservice 方法。

问题似乎是从 443 转发到机密端口 8443 - 错误消息是发生从客户端访问 SOAP-webservice 时:

UT010053:没有机密端口可用于重定向当前请求。

我知道这来自这里的 Undertow-Servlet:

protected URI getRedirectURI(HttpServerExchange exchange) throws URISyntaxException 
        int port = portManager.getConfidentialPort(exchange);
        if (port < 0) 
            throw MESSAGES.noConfidentialPortAvailable();
        

        return super.getRedirectURI(exchange, port);
    

所以端口是

那么问题是如何为 Undertow 实现将交付的机密端口 = 以正确的方式配置?

我的域 xml 包含:

<server name="default-server">
                    <ajp-listener name="ajp" socket-binding="ajp"/>
                    <http-listener name="default" socket-binding="http"   certificate-forwarding="true" proxy-address-forwarding="true" />
                    
                  
                </server>
<socket-binding-group name="pze4-sockets" default-interface="public">
            <socket-binding name="ajp" port="$jboss.ajp.port:8009"/>
            <socket-binding name="http" port="$jboss.http.port:8080"/>
            <socket-binding name="https" port="$jboss.https.port:8443"/>
            <socket-binding name="iiop" interface="unsecure" port="3528"/>
            <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/>
            <socket-binding name="txn-recovery-environment" port="4712"/>
            <socket-binding name="txn-status-manager" port="4713"/>
            <outbound-socket-binding name="mail-smtp">
                <remote-destination host="localhost" port="25"/>
            </outbound-socket-binding>
        </socket-binding-group>

在应用程序中配置了 jboss-webservices.xml Confidential:

<?xml version="1.0" encoding="UTF-8" ?>
<webservices xmlns="http://www.jboss.com/xml/ns/javaee">
    <port-component>
        <ejb-name>MyWebservice</ejb-name>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </port-component>
</webservices>

负载均衡器和 wildfly-nodes 的相同设置适用于 Wildfly8 的 SOAP Web 服务。

到目前为止我的尝试:

添加 https-listener 没有帮助:

  <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm"/>

来自的提示也不起作用:

https://developer.jboss.org/thread/270026

将 SSL-cetrifacate 添加到节点上的 java 也没有帮助。

有什么想法吗?

提前致谢

【问题讨论】:

我也面临同样的问题,这是由于我的 web.xml 文件中的配置。有类似&lt;transport-guarantee&gt;CONFIDENTIAL&lt;/transport-guarantee&gt; 【参考方案1】:

您在 http-listener 中缺少 redirect-socket 属性,它解决了我的问题 看这里:https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html/configuration_guide/configuring_the_web_server_undertow

【讨论】:

以上是关于wildfly 16 - UT 010053:没有机密端口可用于重定向当前请求的主要内容,如果未能解决你的问题,请参考以下文章

Spring 和 Wildfly 异步请求

JPA 未在 WildFly 16 上保存到数据库

Wildfly 9:通过编程[max-post-size]而不是修改standalone.xml来设置Undertow

如何配置从 Eclipse 到 Wildfly 的部署

使用 RESTEasy、Weld 和 Wildfly 失败的 @Inject 对象

战争未部署到Wildfly 10.1中