2017-04-24 71 views
1

我有一個由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工具。 –

回答

0

這是Jersey可以實現的。 Jersey Client在其實現中使用ClosableHttpClient。

如果你想使用Kerberos的SPNEGO認證方案,你可能必須編寫一個自定義的Connector和ConnectorProvider [我還沒有找到一種方法來設置ApacheConnector的AuthenticationScheme]。

檢查這個帖子太以供參考,如果它解決您的用例Can JCIFS be used with Jersey? :)