2010-02-08 4 views
0

우리는 ASP.NET 사이트에서 다운로드 할 수있는 ZIP 파일 라이브러리를 보유하고 있습니다.IIS6에서 원격 서버의 정적 파일에 대한 인증 된 액세스를 제공하는 방법

파일은 웹 팜 외부에서 액세스 할 수있는 NAS 장치에 있습니다.

가 여기에 우리의 초기 전략 :/

  1. 경로에 공유 드라이브에 IIS 가상 디렉터리를지도 그러나 URL

주어 졌을 때

  • 사용자가 압축 파일을 다운로드 할 수 있습니다 zipfiles, 사용자가 파일에 대한 링크를 공유하면 누구나 파일을 다운로드 할 수 있습니다. 우리는 파일 전송을 시작하기 전에 사용자 사이트의 ASP.NET 폼 인증을 사용하여 사용자의 요청을 검증하기를 원합니다.

    몇 가지 문제가 있습니다. zip 파일 요청은 ASP.NET이 아니라 IIS에서 처리합니다. 따라서 양식 인증의 대상이 아닙니다. 또한 ASP.NET 스레드를 사용하고 큰 파일을 다운로드 할 수 없으므로 ASP.NET이 요청을 처리하는 것을 원하지 않습니다. 따라서 * .zip 요청을 처리하도록 asp.net dll을 구성하는 것은 옵션이 아닙니다.

    이것에 대한 아이디어가 있습니까?

    우리가 던진 한 가지 아이디어는 다음과 같습니다. 다운로드 요청은 ashx 처리기에 대한 것입니다. 이 핸들러는 인증 후에 데이터베이스에 저장되는 다운로드 토큰을 생성합니다. 그런 다음 사용자가 토큰이 QueryString에 추가 된 파일로 리디렉션됩니다 (예 : /files/xyz.zip?token=123456789). ISAPI 플러그인이 토큰을 확인하는 데 사용됩니다. 또한 토큰은 x 시간이 지나면 만료됩니다. 이것에 대한 의견이 있으십니까? ISAPI 플러그인을 구현하지 않았으므로 이것이 작동하는지 확실하지 않습니다.

    저는 보안 문제가있어 사용자 정의 코딩을 피하고 오랜 시간 테스트 된 솔루션을 선호합니다.

  • 답변

    0

    폼 인증은 ASP.NET 없이는 수행 할 수 없습니다.

    ASP.NET을 전혀 사용하지 않으려는 경우 파일에 대한 NTFS 권한을 정의하고 사용자에게 도메인 계정을 만들 수 있습니다. 정말 빨리 악몽이 될 것입니다.

    큰 다운로드를 ASP.NET으로 처리하려면 Comet을 살펴보십시오. 기본적으로 IHttpHandler이지만 다른 ThreadPool (ASP.NET 아님)을 사용해야합니다. 나는 Smart Thread Pool을 살펴볼 것을 제안한다.

    다운로드 속도 조절을위한 응용 프로그램을 만들기 위해 몇 달 전을 결합하여 매우 원활하게 실행됩니다.

    +0

    그래, NTFS 사용 권한이 없다. 솔루션에서 인증 된 액세스를 제공합니까? – frankadelic

    +0

    예; '내가 얻을 때?FileId ='데이터베이스에 접속하여 다운로드 할 수 있는지 확인하십시오. –

    +0

    Rubens, 전 COMET과 Smart Thread Pool을 처음 접했습니다 - 특정 유스 케이스에 대한 온라인 사례가 있습니까? – frankadelic

    0

    처리기를 사용하여 정적 파일을 관리하는 것에 대한 우려를 읽고 이해하지만 비동기 처리기를 사용하면 차단되지 않습니다.

    나는 당신이 공정한 가격으로 찾고있는 결과를 얻을 것이라고 생각합니다.

    관련 문제