2 回答
TA贡献1818条经验 获得超8个赞
我想出了解决办法。您需要在系统路径中设置 krb 配置文件。然后只有从 keytab 获得的票是“可转发的”。令人惊讶的是,这在任何地方都没有明确提及。
System.setProperty("java.security.krb5.conf", "path_to_krb_config");
还要确保您在 krb 配置文件中提到了“forwardable = true”。在下面粘贴示例 krb 配置文件:
[libdefaults]
default_realm = DOMAIN.COM
default_tkt_enctypes = aes128-cts aes128-cts-hmac-sha1-96 aes256-cts aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tgs_enctypes = aes128-cts aes128-cts-hmac-sha1-96 aes256-cts aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes128-cts aes128-cts-hmac-sha1-96 aes256-cts aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
dns_lookup_kdc = true
dns_lookup_realm = false
forwardable = true
[realms]
DOMAIN.COM = {
kdc = KDC_HOST.DOMAIN.COM
admin_server = KDC_HOST.DOMAIN.COM
default_domain = DOMAIN.COM
}
[domain_realms]
domain.com = DOMAIN.COM
.domain.com = DOMAIN.COM
TA贡献2080条经验 获得超4个赞
服务帐户“TEST”及其密钥表仅用于与 KDC 建立“信任”并授予服务代码以调用方法 S4U2Self 和 S4U2Proxy。因此服务帐户 TGT 预计不可转发。
除了krb5.conf
您创建的 JAAS 登录配置之外,不需要文件。另一种选择是简单地添加,您的服务帐户“TEST”TGT 将可转发。Map
Krb5LoginModule
optionMap.put("forwardable", "true");
顺便说一下,对于 kerberos 约束委派,只需要使用 S4U2Self 生成的模拟用户票证 TGT 是可转发的,这仅取决于“ ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
TEST”服务帐户上的标志。
添加回答
举报