¿Suplantar con delegación o más de un salto en Kerberos? Completamente perdid

Mi problema aquí es cómo lidiar con la seguridad y una implementación adecuada de la suplantación que funcionará desde una máquina cliente y se autenticará correctamente en mi servidor IIS que pasa el ticket de suplantación aún válido junto con la solicitud LDAP.

My System es un servidor independiente que se ejecuta en la intranet de mi empresa que aloja el controlador de dominio, el servidor LDAP, etc., y utiliza el protocolo Kerberos.

Información del sistema: IIS7 con Windows Auth y suplantar en Windows 7 x64 Información de red: IIS 6, LDAP, Kerberos

Aquí está mi método VB.NET.

Protected FirstName, LastName, EMail As String
Protected Sub Lookup(ByVal UserName As String)
    UserName = Trim(UserName)
    UserName = Replace(UserName, "\", "/")
    UserName = Right(UserName, Len(UserName) - InStr(1, UserName, "/"))

    Using (Hosting.HostingEnvironment.Impersonate) 'ADDED
        Dim directoryEntry As New DirectoryEntry("LDAP://dl/DC=dl,DC=net")
        'directoryEntry.AuthenticationType = AuthenticationTypes.Delegation 'REMOVED

        Dim ds As New DirectorySearcher(directoryEntry)
        Dim r As SearchResult
        Try
            ds.PropertiesToLoad.Add("givenName") 'First Name
            ds.PropertiesToLoad.Add("sn")        'Last Name
            ds.PropertiesToLoad.Add("mail")      'Email

            ds.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" & UserName & "))"
            r = ds.FindOne 'Query LDAP; find record with UserName.

            'Populates all the variables retrieved from LDAP.
            FirstName = If(r.Properties.Contains("givenName"), Trim(r.Properties("givenName").Item(0)), "")
            LastName = If(r.Properties.Contains("sn"), Trim(r.Properties("sn").Item(0)), "")
            If IsNothing(r.Properties.Contains("mail")) Then
                EMail = If(r.Properties.Contains("userPrincipalName"), Trim(r.Properties("userPrincipalName").Item(0)), "")
            Else
                EMail = If(r.Properties.Contains("mail"), Trim(r.Properties("mail").Item(0)), "")
            End If
            EMail = EMail.ToLower
        Catch ex As Exception
            'Error Logging to Database Here
        End Try
    End Using
End Sub

Por favor haga cualquier pregunta necesaria para obtener la información que necesita para ayudarme. He estado investigando esto durante semanas y parece que la suplantación tiene una cantidad tan increíble de variables que podría perderme fácilmente. Simplemente no puedo entender cómo implementar esto en mi código ... Todavía soy bastante nuevo en .NET:

Respuestas a la pregunta(2)

Su respuesta a la pregunta