0

基本的なJavaコードを使用してJersey経由でRESTfulリクエストを送信していますが、何らかの理由でJerseyがすべてのURLの最後に:443ポートを追加しているため、CASが失敗します(プロキシチケットは特定のURLに対して別の場所で生成されます;ポートを追加するとこれが壊れます)。

URL の一部として 443 ポートを送信しないように Jersey に指示する方法はありますか?

編集:参考までに、問題が本当にジャージーの内部にあることに気付く前に、以前のチケットを削除しました。

Edit2: 以下のコードを追加しました。いくつかのアイテムを取り除く必要がありましたが、これは基本的に私が使用しているものです. 使用している特定の API を操作するための一般的なメソッドです。URLをテストするためにdoNotSendモードのものを追加しました。URLは:443なしで返されますが、Jerseyを介して実行すると:443が追加され、CAS認証がオフになります。

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
    public X509Certificate[] getAcceptedIssuers(){return null;}
    public void checkClientTrusted(X509Certificate[] certs, String authType){}
    public void checkServerTrusted(X509Certificate[] certs, String authType){}
}};
try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    ;
}

Client client = Client.create();

String url = Configuration.getOption(CONFIG_REST_URL) + actionPath;
if (dontSendMode) {
    GGResponse r = new GGResponse();
    r.setUrl(url);
    return r;
}
if (StringUtils.isNotEmpty(proxy_ticket)) {
    if (url.contains("?")) {
        url += "&";
    } else {
        url += "?";
    }
    url += String.format("ticket=%s", proxy_ticket);
}
WebResource.Builder resourceBuilder = client
        .resource(url)
        .accept("application/json");

ClientResponse response = null;
if (method.equalsIgnoreCase("GET")) {
    response = resourceBuilder.get(ClientResponse.class);
}
if (method.equalsIgnoreCase("POST")) {
    response = resourceBuilder.post(ClientResponse.class, json);
}
if (method.equalsIgnoreCase("DELETE")) {
    response = resourceBuilder.delete(ClientResponse.class);
}
if (method.equalsIgnoreCase("PUT")) {
    response = resourceBuilder.put(ClientResponse.class, json);
}

String output = null;
String etagResponse = null;
String error = null;

if (response != null && response.getStatus() == 200) {
    output = response.getEntity(String.class);
} else {
    System.out.println(error);
}
4

0 に答える 0