# S4U2Proxy

Расширение *S4U2Proxy* (Service for User to Proxy) используется, когда аутентификация клиента к сервису с ограниченным делегированием может осуществляться только по протоколу Kerberos.

### Delegation process

<figure><img src="https://2456646545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHXbTqf2wEMFmZSYy9461%2Fuploads%2FHW1mn0rc6449R1WIJqW2%2Fimage.png?alt=media&#x26;token=5a1c52e9-ab9c-45c3-bba0-e06f7685b1e4" alt=""><figcaption></figcaption></figure>

1. User стандартно получает TGS-билет с флагом Forwardable для доступа к Сервису A и отправляет его на указанный сервис.
2. Сервис А пересылает полученный TGS-билет на контроллер домена с целью получения доступа к Сервису Б от имени User. Как было замечено [ранее](https://ardent101.github.io/posts/kerberos_theory/#krb_tgs_rep), TGS-билет содержит имя пользователя для которого он предназначался. Таким образом Сервис А доказывает, что User действительно обращался к нему.
3. Контроллер домена проверяет, что атрибут *msds-allowedtodelegateto* “Владельца А” содержит SPN Сервиса Б и в случае успешной проверки отправляет Сервису А Forwardable TGS-билет к Сервису Б для User.

> Важно отметить, что в результате успешного выполнения S4U2Proxy запроса всегда возвращается Forwardable TGS-билет.
