S4U2Self & S4U2Proxy

limited delegation with protocol change

Расширение S4U2Self (Service for User to Self) применяется, если для аутентификации клиента к сервису с ограниченным делегированием требуется использовать любой отличный от Kerberos протокол, например NTLM. В этом случае клиент проходит аутентификацию, но не может передать TGS-билет, так как протокол Kerberos не используется. S4U2Self позволяет сервису получить у контроллера домена Forwardable TGS-билет к самому себе от имени целевого пользователя.

Чтобы учетная запись получила право на ограниченное делегирование со сменой протокола (S4U2Self) в атрибуте UserAccountControl указанной учетной записи необходимо установить флаг TRUSTED_TO_AUTH_FOR_DELEGATION, которому соответствует целочисленное значение 16777216.

  1. User проходит аутентификацию к Сервису А по любому отличному от Kerberos протоколу, допустим NTLM.

  2. Сервис А запрашивает у контроллера домена Forwardable TGS-билет к самому себе от имени User.

  3. Контроллер домена проверяет, что у учетной записи “Владелец А” в атрибуте UserAccountControl установлен флаг TRUSTED_TO_AUTH_FOR_AUTHENTICATION. В результате успешной проверки контроллер домена отправляет Сервису А Forwardable TGS-билет от имени User к самому Сервису А.

При неуспешной проверке, например в случае отсутствии активного флага TRUSTED_TO_AUTH_FOR_DELEGATION или если User состоит в группе “Protected Users”, в ответ будет передан TGS-билет без права передачи (Nonforwardable) для User к Сервису А. Таким образом билет, полученный в результате выполнения S4U2Self-запроса может отличаться наличием флага Forwardable в зависимости от настроек учетной записи и сервиса.

  1. В дальнейшем для получения Forwardable TGS-билет к Сервису Б от имени User используется расширение S4U2Proxy.

Важно отметить, что S4U2Self-запрос TGS-билета от имени произвольного пользователя может быть инициирован любой учетной записью, обладающей SPN, не дожидаясь аутентификации указанного пользователя.

forwardable

S4U2self’s purpose for an account is to be able to get a ST to itself when the user that needs to be impersonated did NOT authenticate via Kerberos - e.g. we used NTLM to authenticate to a webserver. This is called:

The ticket generated with this extension has the forwardable flag set, which is a prerequisit for the whole stuff to work.

Last updated