1

我正在使用带有 Kerberos 的 Java GSS-API 进行安全身份验证。我实现了示例服务器和示例客户端程序,客户端能够成功地验证并从服务器获取服务。对于这些示例程序,我通过 Java 系统属性 (java.security.krb5.kdc) 传递了 KDC 地址。现在的问题是我想从单个客户端程序连接到两个不同的 KDC 服务器以访问多个服务。通过系统属性,我们只能传递一个 KDC 服务器地址。如何从单个客户端程序连接到多个 KDC 服务器?

4

1 回答 1

0

您可以使用 KRB5 配置文件指定多个域条目和相应的 KDC。

[libdefaults]
default_realm = A1.LOCAL
default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
permitted_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc

[realms]
A1.LOCAL  = {
   kdc = ADA1.A1.LOCAL
}

B1.LOCAL = {
   kdc = ADB1.B1.LOCAL
}

[domain_realm] 
a1.local=A1.LOCAL
    .a1.local=A1.LOCAL
b1.local=B1.LOCAL
.b1.local=B1.LOCAL

不要单独设置每个属性,而是将此文件作为配置提供给您的程序。这可以使用 -System.setProperty("java.security.krb5.conf", krb5ConfigFilePath);

于 2020-09-10T04:36:06.830 回答