Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bart

Restringir Download via NTFS

Recommended Posts

E aí galera, beleza?

 

Vou explicar aqui rapidinho o que que eu estou tetnando fazer e qual foi a (idéia de) solução que eu cheguei.

 

Quero restringir no meu site o download de alguns arquivos (ou o acesso a algumas páginas). Que nem acontece agora no Baboo (pra quem não conhece o site: baboo.com.br).

 

A princípio seria só linkar todas as páginas (e demais arquivos disponíveis para downoad) para uma página "download.asp" passando o ID da página/arquivo que o usuário quer acessar/baixar, e esta página "download.asp" verificaria se o usuário está logado e permite ou não o acesso/download. O problema disso é que apesar de funcionar beleza para os usuários, eu achei que fica muito ruim pro desenvolvimento; achei que dá muito trabalho fazer um sistema inteiro pra isso e toda vez que eu for cadastrar um novo link restrito no site eu teria primeiro que cadastrar a página/arquivo no sistema, pegar o ID gerado para este e depois usar como parâmetro no link que eu vou criar em uma nova página do meu site.

 

Então eu pensei em transferir a autenticação dos usuários que podem acessar/baixar os arquivos. Ao invés de a autenticação ser feita via página ASP, ela seria feita via NTFS. E como seria isso?

 

1. Criar um novo diretório na raiz do meu site chamado DOWNLOADS (por exemplo);

 

2. Criar um novo usuário ("usr_download" por exemplo) no NTFS ou no IIS, exclusivamente para acessar o diretório DOWNLOADS;

 

3. Definir a política de segurança do diretório DOWNLOADS (via NTFS ou IIS) de forma que somente o usuário "usr_download" tenha permissão de acesso para leitura (além do administrador da máquina, claro);

 

Pronto, dessa maneira mesmo que o usuário clique no link na página ele não conseguirá baixar/acessar o arquivo.

Até aí está funcionando como eu desejava, MAS quando o usuário estiver logado ele tem que PASSAR A TER ACESSO a este diretório.

 

AÍ É QUE ESTA O GRANDE PROBLEMA (e a minha pergunta) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Como é que eu faço a troca do usuário que o IIS está usando para "conversar" com o sistema operacional via ASP? Como é que eu vou fazer para uma página ASP "logar" em um diretório, dizendo para o NTFS qual é o usuário e a senha para acesso aquele diretório específico? TEM COMO FAZER ISSO?

 

O link abaixo mostra uma página que fiz onde exemplifico o problema para que o entendimento fique melhor:

Página de exemplo

 

ALGUÉM AÍ ME DÁ UMA LUZ, por favor................

De ante mão eu já agradeço a quem teve a paciência de ler tudo isso aí,

Valew mesmo galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é possível uma solução onde a autenticação ASP (que você não detalhou como está fazendo (onde estão armazenados estes usuários?)) "converse" nativamente com a autenticação NTFS.Vejo duas soluções: 1. Criar um grupo de usuarios NTFS com permissão de leitura no diretório "download" e obrigar todo mundo a logar pelo NTFS. Acho essa a solução mais fácil pois elimina a programação, a não ser que a quantidade de usuários seja muito grande e você tenha que criar isso manualmente.2. Criar um diretório virtual "/preparadownload/" que aceite o login via asp mas seja operado pelo mesmo usuario ("usr_download") com permissão de leitura na pasta "download" e via script asp fazer o stream do arquivos ao navegador.É isso aí, talvez apareçam soluções melhores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é possível uma solução onde a autenticação ASP (que você não detalhou como está fazendo (onde estão armazenados estes usuários?)) "converse" nativamente com a autenticação NTFS.Vejo duas soluções: 1. Criar um grupo de usuarios NTFS com permissão de leitura no diretório "download" e obrigar todo mundo a logar pelo NTFS. Acho essa a solução mais fácil pois elimina a programação, a não ser que a quantidade de usuários seja muito grande e você tenha que criar isso manualmente.2. Criar um diretório virtual "/preparadownload/" que aceite o login via asp mas seja operado pelo mesmo usuario ("usr_download") com permissão de leitura na pasta "download" e via script asp fazer o stream do arquivos ao navegador.É isso aí, talvez apareçam soluções melhores.

Os usuários que acessarão os arquivos (e deverão ser autenticados pelo ASP) estarão em um banco de dados SQL Server. E eles são muitos para que usemos a opção número 1.Outro detalhe é que queremos que o prompt que aparece no navegador solicitando login e senha seja omitido. Não sei como fazer isso, mas seria como se a página ASP já enviasse o login e a senha de acesso que o prompt está solicitando.Quanto a sua sugestão 2, também não funciona porque precisamos restringir o acesso do usuário anônimo que o IIS usa como padrão para acessar os diretórios. Esse é o grande trunfo da restrição do acesso. O problema é que se eu restringir o acesso deste usuário no NTFS, não adianta eu permitir o acesso no IIS porque o NTFS está barrando o serviço do IIS de acessar o diretório, INDEPENDENTE DO USUÁRIO DEFINIDO NO IIS.No exemplo que eu mandei (Exemplo), quando você informa o login e a senha no prompt que aparece para acesso aos arquivos restritos, o IIS deixa de usar o seu próprio usuário anônimo e passa a usar o usuário "usr_download" denifido com permissão no NTFS, e por isso ele consegue acessar.O que eu preciso fazer é conseguir falar para o IIS mudar de usuário sem que eu precise passar pelo prompt, sacou? O lance é o ASP já informar o novo usuário que o IIS deve usar e somente depois tentar abrir o diretório. Esse seria o papel da página "download.asp".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto a sua sugestão 2, também não funciona porque precisamos restringir o acesso do usuário anônimo que o IIS usa como padrão para acessar os diretórios. Esse é o grande trunfo da restrição do acesso. O problema é que se eu restringir o acesso deste usuário no NTFS, não adianta eu permitir o acesso no IIS porque o NTFS está barrando o serviço do IIS de acessar o diretório, INDEPENDENTE DO USUÁRIO DEFINIDO NO IIS.

Quando você verifica o login pelo ASP a conta de usuário usada pelo IIS para acesso ao site é o que está determinado nas configurações do site, ou seja o mesmo do acesso anônimo.Por isso falei da criação do diretório virtual. Nele você pode manter os cookies e sessões do site e definir outro usuário para operar o IIS diferente do usuário padrão no resto do site, no caso usr_download, que seria o único com permissão no diretório downloads. A opção permitir acesso anônimo tem de continuar habilitada pois o controle de acesso será feito pelo ASP.O acesso ao diretório virtual seria controlado pelo ASP, a conta de usuário usr_download permitiria ler e realizar o "stream" dos arquivos da pasta download. Neste caso a pasta download pode até ficar fora dos diretórios do site aumentando ainda mais a segurança.OBS: O diretório virtual seria uma pasta independente, não a pasta downloads.Não sei se fui claro na explicação, mas tenho certeza que funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá....

Eu criei o diretório virtual como você falou e fiz as configurações exatamente com você explicou.

 

Dá uma olhada nesse link aí: Configurações

Tem as telas com os passos que eu usei pra fazer as configurações.

 

O diretório ficou bloqueado mesmo. Continuou pedindo a senha.

Como é que eu faço agora pro ASP controloar o acesso?

 

Ahh cara, independente de qualquer coisa, VALEW PELA FORÇA ATÉ AQUI.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.