Constrained Delegation
Microsoft release an update and safer version of kerberos delegation know as "Contrained Delegation"
The main goal of delegation is to solve the double hop issue, the previous solution of unconstrained Delegation allowed the service to perform authentication to anything in the domain, constrained delegation limit the scope to specific services.
The native kerberos protocol does not support constrained delegation by default, therefore microsoft release 2 extenstions for this feature:
S4u2self
Purpose: Allow a service to obtain a kerberos ticket for a user without requiring the user's password
How it works:
When a user connect to a service, the service can use s4u2self to request a kerberos ticket for the user directly from the KDC
The KDC verify the request and issue a ticket representing user's identy, but now allowing the service to use this ticket ACCESS other service yet
This ticket is known as "self-ticket" beacuse it represents the user's identiy but is only usable by the service itself that request it
S4u2proxy
Purpose: Allow a service to request access to another service on behalf of a user by using the ticket obtained via S4u2self
How it works:
After getting the "self-ticket", the service will uses s4u2proxy to reqest a forwardable ticket from the KDC that allow it to act on behalf of the user when accessing the proxy
The KDC will verify with the constain delegation policy to check if this user is allow to delegate to the service
Summary of extenstions
1) Step 1 (s4u2self): User authenticate to service A, the service A request a "self-ticket" from the KDC for user, without the need of user interaction of credentials
2) Step 2(s4u2proxy): The service A use this ticket and request permission from KDC to act on behalf of the user when accessing service B (database). If the constrain delegation policy allow this delegation, the KDC will then issue a service ticket for service A to access service B onbehalf of the user
# Author
Ik0nw
Last updated