您好,我有一個服務器端休息客戶端應該調用另一個服務器休息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)
任何建議? 謝謝。