Apache HttpComponents HttpClient 5.0 - Kerberos SPNEGO 客户端
Posted
技术标签:
【中文标题】Apache HttpComponents HttpClient 5.0 - Kerberos SPNEGO 客户端【英文标题】:Apache HttpComponents HttpClient 5.0 - Kerberos SPNEGO client 【发布时间】:2020-09-27 04:12:48 【问题描述】:我正在尝试将我的 HttpClient 4.x 代码移植到 5.x
Lookup<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
.register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(true)).build();
但是在 5.x 中不再有 AuthSchemeProvider,并且 SPNegoSchemeFactory 有一个不同的构造函数:-/
【问题讨论】:
【参考方案1】:这样有什么问题?
final Registry<AuthSchemeFactory> schemeFactoryRegistry = RegistryBuilder.<AuthSchemeFactory>create()
.register(StandardAuthScheme.BASIC, BasicSchemeFactory.INSTANCE)
.register(StandardAuthScheme.DIGEST, DigestSchemeFactory.INSTANCE)
.register(StandardAuthScheme.NTLM, NTLMSchemeFactory.INSTANCE)
.register(StandardAuthScheme.SPNEGO, new SPNegoSchemeFactory(
KerberosConfig.custom()
.setStripPort(KerberosConfig.Option.DEFAULT)
.setUseCanonicalHostname(KerberosConfig.Option.DEFAULT)
.build(),
SystemDefaultDnsResolver.INSTANCE))
.register(StandardAuthScheme.KERBEROS, KerberosSchemeFactory.DEFAULT)
.build();
【讨论】:
代码可以编译,很好,但我仍然收到 401 错误:-/ 你有完整的客户端实现吗? 在您的问题中,您询问了有关将一段代码从 HC 4.x 移植到 HC 5.x 的问题。现在你问的是完全不同的东西。 SPNEGO 在 HC 中被标记为实验性的。作为一个项目,我们并不真正支持它。以上是关于Apache HttpComponents HttpClient 5.0 - Kerberos SPNEGO 客户端的主要内容,如果未能解决你的问题,请参考以下文章
Apache HttpComponents 工具类 [ HttpUtil ]
org.apache.httpcomponents.httpclient
Gradle 无法解析依赖组:org.apache.httpcomponents,模块:httpmime