Foros del Web » Programación para mayores de 30 ;) » .NET »

Un problema con la seguridad

Estas en el tema de Un problema con la seguridad en el foro de .NET en Foros del Web. Hola, cómo están ? Este es un caso bastante raro y por lo que he leído les ha pasado a otros y no hay una ...
  #1 (permalink)  
Antiguo 22/01/2005, 16:19
 
Fecha de Ingreso: enero-2002
Mensajes: 136
Antigüedad: 23 años
Puntos: 1
Un problema con la seguridad

Hola, cómo están ? Este es un caso bastante raro y por lo que he leído les ha pasado a otros y no hay una solución muy a la mano. Voy resumirles, se trata de una aplicación web (intranet) que tiene todos los enlaces públicos excepto uno que es restringido. Para entrar a esa página implementé un formulario para autenticar con seguridad integrada Windows (Active Directory de Windows 2000). La autenticación es una función que usa la clase DirectoryEntry y hace la búsqueda. Luego, con el usuario autenticado llama a otra función que se encarga de levantar todos los roles (grupos del Active Directory) a los que pertence el usuario y para eso utiliza la clase DirectorySearcher. Lo raro de todo ésto es que funciona correctamente en el servidor local, es decir en la PC de desarrollo con el site instalado en localhost. El IIS está bien configurado, no hay problema de permisos, todo bien. El asunto es al entrar desde otra PC, cuando va a ejecutar la segunda función da un error de operación en Dim result As SearchResult = search.FindOne(). Les paso el código de las funciones por si lo quieren chequear. Alguien sabe que puede pasar ?. Gracias

Public Function IsAuthenticated(ByVal domain As String, ByVal user As String, ByVal pass As String) As Boolean

Dim domusr as string
domusr = domain & "\" & user
Dim entry As DirectoryEntry = New DirectoryEntry(_path & Domain, domusr, pass, AuthenticationTypes.Secure)

Try
Dim obj As Object = entry.NativeObject
Dim search As DirectorySearcher = New DirectorySearcher(entry)

search.Filter = "(SAMAccountName=" & user & ")"
search.PropertiesToLoad.Add("cn")
Dim result As SearchResult = search.FindOne()

If (result Is Nothing) Then
Return False
End If

_path = result.Path
_filterAttribute = CType(result.Properties("cn")(0), String)
Catch ex As Exception
Throw New Exception("Error en la autenticación. " & ex.Message)
End Try

Return True
End Function


Public Function GetGroups() As String

Dim search As DirectorySearcher = New DirectorySearcher(_path)
search.Filter = "(cn=" & _filterAttribute & ")"
search.PropertiesToLoad.Add("memberOf")
Dim groupNames As StringBuilder = New StringBuilder()

Try
Dim result As SearchResult = search.FindOne()
Dim propertyCount As Integer = result.Properties
"memberOf").Count

Dim dn As String
Dim equalsIndex, commaIndex

Dim propertyCounter As Integer

For propertyCounter = 0 To propertyCount - 1
dn = CType(result.Properties("memberOf")(propertyCounte r), String)

equalsIndex = dn.IndexOf("=", 1)
commaIndex = dn.IndexOf(",", 1)
If (equalsIndex = -1) Then
Return Nothing
End If

groupNames.Append(dn.Substring((equalsIndex + 1), (commaIndex - equalsIndex) - 1))
groupNames.Append("|")
Next

Catch ex As Exception
Throw New Exception("Error obteniendo grupos " & ex.Message)
End Try

Return groupNames.ToString()
End Function
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.