Выдавать себя за делегирование или более одного прыжка на 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 :(