Kerberos:通过 IP 地址访问主机

Kerberos: accessing host by IP address

我知道 Kerberos 不适用于 IP 地址,它仅依赖于域名和正确的 DNS 条目。

但我发现 overthere 库的旧版本允许使用带有 Kerberos 身份验证的 IP 地址。

我从那里提取代码并创建了小型 java 项目来演示 https://github.com/igolikov/KerberosWithIP

它使用 Apache HttpClient 向 hyper-v 主机发送 WSMan 请求。

我还发现它适用于 httpclient 4.3.3 而不适用于 httpclient 4.4.1

它怎么可能与 IP 一起工作?

UPD1。我想 sun.security 中的 httpclient 或其他东西可能会使用反向 DNS 查找。我尝试使用 Wireshark 拦截流量,发现 1 个 Revers DNS 查找(in-addr.arpa),但它以 "No such host" 响应,因为默认 DNS 服务器无法为此 IP 执行反向 DNS。

UPD2。这里是服务器配置 有主机名和 IP 地址的 SPN

SPN( 1 )   =       WSMAN/10.10.64.60 1+=1
SPN( 1 )   =       HOST/somehost.corp.org.com 1+=1
SPN( 1 )   =       HOST/somehost 1+=1

Kerberos 可以在没有 DNS 的情况下正常工作,DNS 解决的问题是连接的双方同意使用相同的服务主体。如果我使用 kerberos API 将该主体修复为标准主体,那么只要服务器端在其密钥表中具有该主体,它将继续工作。

即在连接之前,您必须知道要连接的服务使用的 kerberos 主体。大多数服务主体的形式为

service/dns.name.of.host

但是服务主体可以是任何东西,只要客户端软件知道要使用什么"somehow"。