您好,我有一个服务器端休息客户端应该调用另一个服务器休息API的问题。 它实际上与JBoss AS 7.1和Tomee一起工作,但当我使用Wildfly 10.1时,web服务响应404。REST客户端与Wildfly10问题
目标端点使用cookie身份验证来检查授权,这由servletFilter完成。 于是拨打服务我有一个cookie: 的Cookie:“COOKIE_NAME:TOKEN”
的Servlet过滤器是实际工作的罚款,事实上如果我调用相同的web服务与任何其他客户端(我试过的IntelliJ的一个邮差)它工作正常。
该问题只发生在服务器端调用通过Play框架1.2.5应用程序使用play WS lib完成。
这里的代码: (超类方法返回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();
相同的请求工作正常与邮差/的Intellij客户端( cookie头等于播放WS请求)
所有工作正常与JAX-RS impl的JBoss AS 7.1(ee6)。由Jersey提供
它不适用于带有RestEasy提供的JAX-RS impl的WildFly 10.1(ee7)。 (重定向类似不被cookie所支持,所以客户端返回404)
任何建议? 谢谢。