繁体   English   中英

REST Client问题与Wildfly10

[英]REST Client issue with Wildfly10

嗨,我在服务器端Rest客户端上遇到了问题,该客户端应调用另一个服务器Rest api。 它实际上与JBoss AS 7.1和Tomee一起使用,但是当我使用Wildfly 10.1时,Web服务会以404响应。

目标端点使用cookie身份验证来检查授权,这是由ServletFilter完成的。 因此,要呼叫该服务,我有一个Cookie:Cookie:“ COOKIE_NAME:TOKEN”

servlet过滤器实际上工作正常,实际上,如果我用任何其他客户端(我尝试过Intellij的和Postman的)调用相同的Web服务,则工作正常。

该问题仅发生在使用play WS lib通过Play框架1.2.5应用程序完成服务器端调用时。

这里的代码:(超类方法返回WS.WSRequest的一个实例)

   @play.mvc.Before(priority = 0)
    protected static WS.WSRequest authCookieHttpClient(String relativeUrl) throws IllegalStateException {

        if (JWT_AUDIENCE != null && JWT_ISSUER != null && JWT_SECRET != null && JWT_TIMEOUT != null && API_ENDPOINT != null && AUTH_COOKIE_NAME != null) {
            JWTClaims jwtClaims = new JWTClaims(
                    JWT_ISSUER,
                    Security.getConnectedUser().username,
                    JWT_AUDIENCE,
                    JWT_TIMEOUT
            );
            WS.WSRequest request = WS.url(API_ENDPOINT + relativeUrl);
            JWTProducer jwtProducer = new JWTProducer(JWT_SECRET, jwtClaims);

            try {
                request.setHeader("Cookie",
                        AUTH_COOKIE_NAME + "=" + URLEncoder.encode(jwtProducer.signPayload(), "utf-8"));
            } catch (UnsupportedEncodingException e) {
                Logger.error("Unable to encode cookie info", e);
            }

             return request;
        }
        throw new IllegalStateException("Cannot use parent controller: " + ApiSubscriber.class + " without configuring API endpoint and JWT features");
    }

调用代码:

 WS.HttpResponse res = authCookieHttpClient(areaUrl + sb.toString()).get();

相同的请求在Postman / Intellij Client中正常工作(cookie头等于play WS请求)

带有JAX-RS impl的JBoss AS 7.1(ee6)都可以正常工作。 由泽西岛提供

它不仅与RestEasy提供的具有JAX-RS impl的WildFly 10.1(ee7)一起使用。 (Cookie不会重定向这样的重定向,因此客户端返回404)

有什么建议吗? 谢谢。

该问题是由播放框架Java客户端生成的queryString引起的。 在使用Jersey的Jboss AS 7.1上,使用RestEasy很好地接受了类似var1=&var2=123的查询时,此操作失败,但没有引发异常,结果是404响应。

当然,目标端点是使用javax.ws.rs @QueryParam映射queryString参数。

我找到了将调试信息添加到WildFly独立xml(用于请求/响应),然后将异常记录到日志中的解决方案。

在Wildfly中记录HTTP请求

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM