如何在宁静的服务中进行kerberos/spnego支持?

问题描述:

我有一个由C编写的客户端,它使用libcurl将json发送给restful api服务(称为服务器)。服务器是由java编写的,restful api是通过JAX-RS之一的Jersey实现的(它非常简单,可以切换到另一个JAX-RS实现)。现在我想在C客户端访问java restful API服务器之间做一些安全工作。我在互联网上搜索,似乎我应该使用kerberos或spnego进行HTTP访问。我遇到了一些问题。如何在宁静的服务中进行kerberos/spnego支持?

  1. 我想使用kerberos/spnego身份验证。但我通过球衣文档(https://jersey.java.net/documentation/latest/security.html)的安全部分来看,我没有找到任何kerberos相关的文档。你知道球衣是否支持kerberos?

  2. 如果我切换到Apache CXF,是否易于切换?我检查了关于CXF kerberos支持的文档。看起来这太简单了,你有使用Apache CXF时支持Kerberos身份验证的详细文档或简单示例吗?

如果有什么问题,请纠正我。谢谢。

+0

第三种选择是在应用程序服务器配置SPNEGO。我刚刚做到了。这个页面有一些关于如何在Tomcat中执行的信息:https://tomcat.apache.org/tomcat-8.5-doc/windows-auth-howto.html。我设法实现了这种配置,但是我没有ktpass工具,所以我使用了JDK附带的ktab工具。 –

这是Jersey可以实现的。 Jersey Client在其实现中使用ClosableHttpClient。

如果你想使用Kerberos的SPNEGO认证方案,你可能必须编写一个自定义的Connector和ConnectorProvider [我还没有找到一种方法来设置ApacheConnector的AuthenticationScheme]。

检查这个帖子太以供参考,如果它解决您的用例Can JCIFS be used with Jersey? :)