泽西岛客户端坚持SAML GET请求

时间:2016-08-05 10:26:42

标签: java saml

我遇到了使用Java发送带有ApacheHttpClient4的GET请求到SAML网址(https://en.wikipedia.org/wiki/SAML_2.0)的问题。我从上一个请求获取的Location头中获取url,返回302.然后我在url上执行GET,格式为https://some.domain/?SAMLRequest=...&RelayState=...。泽西以某种方式卡在它上面并且永远不会发送实际请求(我已检查过Charles并启用了日志过滤器,但GET从未发生过,它甚至都没有尝试)。它停留在以下行:

PoolingClientConnectionManager - Connection request: [route: {tls}->http://127.0.0.1:8888->https://some.domain][total kept alive: 3; route allocated: 2 of 2; total allocated: 7 of 20]

1 个答案:

答案 0 :(得分:0)

这是一个艰难的,但我终于设法通过向客户端添加ClientFilter来解决它,只执行以下操作:

/**
 * This class is only used to solve cases where a Client gets stuck in a redirect process.
 */
public class MyClientFilter extends ClientFilter {

    @Override
    public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
        return getNext().handle(clientRequest);
    }
}

不知何故,它设法强制客户端继续关注重定向。