【问题标题】:Can JCIFS be used with Jersey?JCIFS 可以与泽西岛一起使用吗?
【发布时间】:2017-12-06 02:26:23
【问题描述】:

我在使用 Jersey 和 Apache HttpClient 的现有应用程序中添加 NTLM 身份验证时遇到问题。我只能使用 JCIFS 进行身份验证,来自 HttpClient 的默认 NTLM 身份验证不起作用(我得到401)。

Apache HttpClient 页面中的示例显示了如何使用 CloseableHttpClient: https://hc.apache.org/httpcomponents-client-4.5.x/ntlm.html

Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
    .register(AuthSchemes.NTLM, new JCIFSNTLMSchemeFactory())
    .register(AuthSchemes.BASIC, new BasicSchemeFactory())
    .register(AuthSchemes.DIGEST, new DigestSchemeFactory())
    .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory())
    .register(AuthSchemes.KERBEROS, new KerberosSchemeFactory())
    .build();
CloseableHttpClient httpClient = HttpClients.custom()
    .setDefaultAuthSchemeRegistry(authSchemeRegistry)
    .build();

但是对于 CloseableHttpClient 我不能使用像target这样的方法:

WebTarget target = client.target(this.my Address).path(elementPath)
            .resolveTemplate(P_ID, myId);

只有execute

我不确定是否应该重写整个应用程序并仅使用基本的 HttpClient 调用,例如:

HttpGet httpGet = new HttpGet(repositoryAddress + "/" + "element/70032_1498404600000(,,arm)");
CloseableHttpResponse response = httpClient.execute(httpGet);

或者还有其他方法可以在javax.ws.rs.client.Client中设置AuthSchemes,可以在Jersey使用?

【问题讨论】:

    标签: java jersey apache-httpclient-4.x ntlm jcifs


    【解决方案1】:

    我遇到了类似的问题,我的方法如下:

    1) 如果您使用 ApacheConnectorProvider 作为连接器,您可以覆盖 ApacheConnector 代码(在此处找到 https://github.com/jersey/jersey/tree/master/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector)。就我而言,我必须创建自定义的 ConnectorProvider 和 Connector。

    2) 创建自定义属性或使用 HttpClientContext.AUTHSCHEME_REGISTRY 并将其放入 ClientConfig (这是我们在 Jersey Client 中为客户端设置属性的方式)。

    3) 当您调用 builder.get( 或 post 或任何其他方法) 时,会调用自定义连接器。在自定义连接器中,您可以检查上述步骤中设置的属性。如果已设置,您可以像为 ClosableHttpClient 指定的那样设置 DefaultAuthSchemeRegistry(ApacheConnector 在其实现中使用 ClosableHttpClient)。

    这可能是一种 hack,但对我来说效果很好。希望这会有所帮助:)

    【讨论】:

    • 糟糕的球衣很烂。
    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多