【问题标题】:Identifying http request with KERBEROS from Java runing on Linux从 Linux 上运行的 Java 识别带有 KERBEROS 的 http 请求
【发布时间】:2017-10-16 13:57:37
【问题描述】:

我有一些 Linux 和 Windows 服务器的环境。身份验证由 Kerberos 处理。我想做一些 JAVA 代码,它会自动验证它发出的 http 请求是由执行程序的登录用户完成的。

例如,如果我有这个代码:

CloseableHttpClient winHttpclient = WinHttpClients.createDefault();

HttpGet httpget = new HttpGet("http://mykerberos/endpoint");

winHttpclient.execute(httpget).getEntity();

当我从 Windows 执行它时,它开箱即用。我被http://mykerberos/endpoint 识别并得到回复。

现在,我想在 Linux 服务器上做同样的事情。 我找到了一些建议,例如 https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part6.html#Proxy_Authentication,但这不是我要寻找的,因为它需要我的凭据:在 Windows 中,我什至不必通过它们。

有人知道我如何做到这一点吗?

提前感谢您的帮助!

【问题讨论】:

  • 您的 Windows 凭据(我猜)是由 Active Directory 服务器授予的 Kerberos 票证; Web 服务器也(我猜)使用 AD 进行身份验证,这就是 SPNego 协议的用途。但是您的 Linux 凭据是什么? Didi 您使用本地 Linux 帐户登录,还是使用您在 Windows 中使用的同一个 AD 帐户登录(例如通过 SSSD 或 Centrify 完成绑定)?
  • 您好,感谢您的回复。你是对的,当我们登录到 Windows 时,我们会得到一个 kerberos 票证,是的,Web 服务器正在使用我们的 AD 服务器进行身份验证。使用 SPNego 协议进行身份验证。我们在 Linux 上使用相同的帐户。我不知道使用哪个工具将它们绑定到我们的 AD。我检查了一下,当我登录 linux 主机时,klist 给我返回了一张票。
  • 如果您的 Kerberos 票证缓存中有一个有效的 TGT,那么任何体面的 HTTP 客户端(即支持 SPNego)都应该能够连接。包括curl 命令行实用程序和--negotiate -u :
  • 警告:当谈到 SPNego 时,Apache HTTP 客户端的名声不好;开发 Java 应用时,请坚持使用默认库。
  • 我已成功尝试curl -u : --negotiate http://...。在 Java 中,我尝试遵循:docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/… 并且出现此错误: Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt false ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tr​​yFirstPass is false useFirstPass is false storePass 为 false clearPass 为 false 从缓存中获取 TGT >>>KinitOptions 缓存名称为 /tmp/krb5cc_0 Principal 为 null 来自 Ticket Cache 的 null 凭据

标签: java linux single-sign-on kerberos


【解决方案1】:

在使用正确版本的 Java 时,遵循 https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part6.html 可以正常工作(它适用于 java 8,但不适用于 java 6)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2020-03-15
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多