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”服務帳戶上的標志。
添加回答
舉報