Hola,
 
No lei todo el thread pero les voy a comentar lo que yo hice para resolver este 
tema, sin permisos en NTFS y con autenticación y autorización a nivel de App. 
Primeramente el usuario autenticado en mi aplicación lo establezco en el 
Principal del Context. Luego oculto los archivos en directorios que por HTTP 
son innacesibles, pero sin implementar permisos especiales sobre filesystem y 
por último el acceso al archivo se logra mediante un ASP.Net Handler, es decir 
que el link final te queda con una forma similar a: 
http://misitio/jshdfjhsjdhhd.a.aspx o como quieras configurar el Handler.
 
Al momento que un usuario sube un archivo al web app establece que permiso debe 
tener el usuario que quiera bajarse el archivo. A partir de allí genero una 
cadena con el ID de archivo + el permiso que se necesita para acceder al 
archivo, esta cadena la encripto con password privada y la encodeo para http. 
Luego en el handler desencripto la cadena, verifico si el archivo requiere de 
algún permiso, en caso que si verifico contra el Principal si ese usuario tiene 
el permiso y en caso positivo hago un Response.File(path rpivado) del archivo, 
caso contrario redirecciono a pagina notificando el problema.
 
Todo este esquema trabaja sin acceso a base de datos con lo cual es muy rapido 
y a nivel de escalabilidad me ha resultado muy bien. Si quieren ver un ejemplo 
de esta implementación pueden entrar a: 
 
http://www.mug-it.org.ar/341450-Instrumentos-para-financiacion-de-proyectos-de-TI.note.aspx
 
Y tratar de bajar alguno de los power point que tiene la nota. Luego fijense 
que el link es el mism tanto para el usuario registrado como para anonimo.
 
Espero que sirva.
Abrazo,
Damián Herrera


Responder a