Выдавать себя за делегирование или более одного прыжка на Kerberos? Полностью потерян

Моя проблема здесь заключается в том, как бороться с безопасностью и надлежащей реализацией олицетворения, которая будет работать с клиентского компьютера и правильно проходить проверку подлинности на моем сервере IIS, который передает еще действующий билет олицетворения вместе с запросом LDAP.

Моя система - это независимый сервер, работающий во внутренней сети моей компании, на котором размещены контроллер домена, сервер LDAP и т. Д., И который использует протокол Kerberos.

Системная информация: IIS7 с Windows Auth и олицетворением на Windows 7 x64Информация о сети: IIS 6, LDAP, Kerberos

Вот мой метод 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

Пожалуйста, задавайте любые вопросы, необходимые для получения информации, которая вам нужна, чтобы помочь мне. Я исследовал это в течение нескольких недель, и кажется, что Олицетворение имеет такое безумное количество переменных, что я мог легко потеряться. Я просто не могу понять, как реализовать это в моем коде ... Я все еще довольно плохо знаком с .NET :(

Ответы на вопрос(1)

Ваш ответ на вопрос