如何在宁静的服务中进行kerberos/spnego支持?
问题描述:
我有一个由C编写的客户端,它使用libcurl将json发送给restful api服务(称为服务器)。服务器是由java编写的,restful api是通过JAX-RS之一的Jersey实现的(它非常简单,可以切换到另一个JAX-RS实现)。现在我想在C客户端访问java restful API服务器之间做一些安全工作。我在互联网上搜索,似乎我应该使用kerberos或spnego进行HTTP访问。我遇到了一些问题。如何在宁静的服务中进行kerberos/spnego支持?
我想使用kerberos/spnego身份验证。但我通过球衣文档(https://jersey.java.net/documentation/latest/security.html)的安全部分来看,我没有找到任何kerberos相关的文档。你知道球衣是否支持kerberos?
如果我切换到Apache CXF,是否易于切换?我检查了关于CXF kerberos支持的文档。看起来这太简单了,你有使用Apache CXF时支持Kerberos身份验证的详细文档或简单示例吗?
如果有什么问题,请纠正我。谢谢。
答
这是Jersey可以实现的。 Jersey Client在其实现中使用ClosableHttpClient。
如果你想使用Kerberos的SPNEGO认证方案,你可能必须编写一个自定义的Connector和ConnectorProvider [我还没有找到一种方法来设置ApacheConnector的AuthenticationScheme]。
检查这个帖子太以供参考,如果它解决您的用例Can JCIFS be used with Jersey? :)
第三种选择是在应用程序服务器配置SPNEGO。我刚刚做到了。这个页面有一些关于如何在Tomcat中执行的信息:https://tomcat.apache.org/tomcat-8.5-doc/windows-auth-howto.html。我设法实现了这种配置,但是我没有ktpass工具,所以我使用了JDK附带的ktab工具。 –