Я пытаюсь найти разницу между билетами Forwardable и Proxiable в Kerberos (я использую MIT Kerberos 5).
В качестве основы я взял Spring Kerberos SPNe go пример делегирования
Там у меня есть 2 шлюза и 1 керберизованный сервис.
Вот поток:
- Я делаю
kinit -f testuser
, таким образом получая переадресацию тикет. - Откройте мой браузер и укажите на службу Gateway1.
- Он аутентифицирует testuser и получает перенаправленный билет (TGT) для действий от имени testuser и отправляет полученный токен службе Gateway2.
- Служба Gateway2 делает то же самое и получает ресурс для службы Kerberized от имени testuser.
Когда на первом шаге I становится доступным forwardable ticket (kinit -fp testuser
) Я получаю тот же результат, что и с просто переадресацией, хотя я должен получить ошибку на 4-м шаге, потому что проксируемый билет не является TGT, поэтому Gateway2 не должен получать делегированный токен.
Кроме того, в отладке на 3-м шаге я вижу, что флаги на билете: Forwardable;Forwarded;Proxiable
На 4-м шаге флаги: Forwardable;Forwarded
Итак, proxiable
флаг исчез.
Когда на 1-м шаге I получить только проксимальный билет (kinit -p testuser
), на 3-м шаге я вижу ошибку в файле журнала krb5kd c:
krb5kdc[2217](info): TGS_REQ (1 etypes {18}) 192.168.33.112: TGT NOT FORWARDABLE: authtime 0, testuser@REALM.COM for krbtgt/REALM.COM@REALM.COM, KDC can't fulfill requested option
и, следовательно, не может делегировать токен даже на Gateway1.
Чего мне не хватает или что я делаю неправильно?