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