WebService: Usuario anónimo al ejecutar un FileInfo.MoveTo(...)

20/12/2005 - 13:32 por IbanJBalasch | Informe spam
Buenas,

Tengo un problema relativo a seguridad con usuarios que me tiene
desconcertado, os explico:

Tenemos un WebService en el server UNO que se encarga de manejar los
logs de errores que guarda en una carpeta compartida en el server DOS.
Hasta aqui todo funciona de mil maravillas, a través de "StreamReader"
y "StreamWriter" voy leyendo y escribiendo logs, con seguridad
integrada de Windows, todo bien.

Hemos querido emplear un sistema de truncado de ficheros para que, al
llegar a un limite de KBs, se mueva el fichero a otro nombre y se cree
otro nuevo. Para ello hemos usado el objeto de System.IO "FileInfo" que
nos proporciona el método de "Length" para saber cuando truncarlo y el
"MoveTo" para moverlo con otro nombre.

El problema y la sopresa ha sido cuando nos daba un problema de
seguridad, hemos hecho una auditoria a la carpeta compartida del server
DOS para ver que usuario era el que tenia problemas y vemos que para
realizar el metodo "MoveTo" coje el rol de usuario anónimo de internet
!!! Para hacer una prueba hemos dados permiso de "modificación" a
dicho usuario y ha realizado correctamente el proceso de truncado.

¿¿ Alguien podria indicarnos porque esta cojiendo ese rol de usuario
anonimo cuando tenemos seguridad integrada en el site y mas aun cuando
los objetos tipo "StreamReader", "StreamWriter" o
"Directory.CreateDirectory" funcionan sin problemas sin él ??

Es desconcertante :-(

Gracias de antemano y un saludo,

Iban J. Balasch
Barcelona

Preguntas similare

Leer las respuestas

#1 IbanJBalasch
21/12/2005 - 15:37 | Informe spam
Bueno, resuelto lo explico por si alguien se encuentra con el
problema:

Habia una "sutil" diferencia en lo expuesto antes: el StreamReader y
StreamWriter se ejecutaban en un hilo cosa que el "MoveTo" se ejecutaba
directamente llamando a una clase donde contenia dicha instrucción.

Realiza otra auditoria mas para ver que usuario tomaba el rol cuando
se lanzaba el StreamWriter y vi que era del tipo de sistema (NT
Authority...). La solución paso por realizar el truncado del fichero
(la función "MoveTo") en un hilo, en mi caso, lo emplaze justo antes
del ResponseWrite. Para impedir que hubieran errores del tipo "el
archivo esta en uso" realize un bloqueo del fichero:

# Codigo VB.NET:

oReadWriteLock.AcquireWriterLock(Timeout.Infinite)
TruncateLog()
oReadWriteLock.ReleaseWriterLock()

En la función "TruncateLog" se realiza el "MoveTo" con try-catch en
cuyo catch especifico el desbloqueo del fichero (ReleaseWriterLock)
para no dejarlo bloqueado en caso de error. El objeto "oReadWriteLock"
esta definido como privado para toda la clase:

Private oReadWriteLock As New System.Threading.ReaderWriterLock

Espero que le sea de ayuda a alguien que se encuentre en un futuro con
este error.

Un saludo

Iban J. Balash
Barcelona
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida