¿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, KerberosAquí 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: