Delegation is the act of doing something on behalf of another. Microsoft implements this in their implementation of kerberos since kerberos authentication isn’t inherently transitive. This is sometimes referred to as the double-hop issue
Example:
User A
- A standard user
Service A
- The authentication context of some application within Active Directory; eg: a service account.
Service
B - The authentication context of another application within Active Directory; eg: a service account.
User A’s authentication to Service A didn’t authorize them to access Service B.
Delegation Example:
Services impersonate their clients for a smoother end-user experience.
A service can use client’s TGT to request a ticket for delegation. The computer the service is run on must be configured to do so via having TrustedForDelegation
enabled. With this configuration, TGTs are cached in the computer’s memory so the service account can authenticate on behalf of users.
A computer or service account with TrustedToAuth
may impersonate any user for the service specified by the msds-allowedtodelegateto
property. This is a property that can be set by users with the SeEnableDelegation
privilege; typically only Domain Admins have this.