IIS 7에서 .NET 멤버 자격 인증을 사용하여 FTP 구성
호환성
버전 | 참고 |
---|---|
IIS 7.5 | FTP 7.5 서비스는 Windows 7 및 Windows Server 2008 R2의 IIS 7.5에 대한 기능으로 제공됩니다. |
IIS 7.0 | FTP 7.0 및 FTP 7.5 서비스는 IIS 7.0용 대역 외로 배송되었으며, URL https://www.iis.net/downloads/microsoft/ftp에서 서비스를 다운로드하고 설치해야 했습니다. |
소개
Microsoft는 Windows Server® 2008용으로 완전히 다시 작성된 새 FTP 서비스를 만들었습니다. 이 새로운 FTP 서비스는 웹 작성자가 이전보다 더 나은 콘텐츠를 게시할 수 있는 많은 새로운 기능을 통합하고 웹 관리자에게 더 많은 보안 및 배포 옵션을 제공합니다.
이 문서에서는 FTP 멤버 자격 기반 인증에 대한 기본 웹 사이트를 구성하는 방법을 안내합니다.
참고
이 문서는 로컬 웹 서버에 설치된 SQL Server 인스턴스를 사용하여 작성되었습니다.
사전 요구 사항
이 문서의 절차를 완료하려면 다음 항목이 필요합니다.
IIS 7.0은 Windows Server 2008에 설치해야 하며 다음을 구성해야 합니다.
- IIS 7.0 설치에서 만든 기본 웹 사이트는 여전히 존재해야 합니다.
- 인터넷 정보 서비스 관리자를 설치해야 합니다.
새 FTP 서비스를 설치해야 합니다. 다음 링크 중 하나를 사용하여 웹 사이트에서 FTP 서비스를 https://www.iis.net/ 다운로드하고 설치할 수 있습니다.
- IIS 7.0용 FTP 7.5(x64)
- IIS 7.0용 FTP 7.5(x86)
인증을 처리하는 확장성 COM 프로세스에 대한 액세스를 허용하도록 콘텐츠 권한을 설정합니다.
명령 프롬프트를 엽니다.
다음 명령을 입력합니다.
ICACLS "%SystemDrive%\inetpub\ftproot" /Grant "Network Service":M /T
명령 프롬프트를 닫습니다.
기본 웹 사이트에 FTP 게시 추가
이 첫 번째 섹션에서는 FTP 게시를 기본 웹 사이트에 추가하고 로컬 관리자 계정이 콘텐츠를 편집할 수 있도록 하는 데 필요한 설정을 추가합니다.
IIS 7.0 관리자의 연결 창에서 트리에서 사이트 노드를 확장한 다음 기본 웹 사이트를 클릭합니다.
작업 창에서 FTP 게시 추가를 클릭합니다.
FTP 사이트 게시 추가 마법사가 나타나면 다음을 수행합니다.
IP 주소 드롭다운에서 FTP 사이트의 IP 주소를 선택하거나 기본 선택 항목인 "할당되지 않은 모든 항목"을 적용하도록 선택합니다. 이 연습에서는 IP 주소 상자에 "127.0.0.1"을 입력하여 컴퓨터의 로컬 루프백 IP 주소를 입력합니다.
참고
IPv6을 사용하는 경우 "::1"의 IPv6 localhost 바인딩도 추가해야 합니다.
일반적으로 포트 상자에 FTP 사이트의 TCP/IP 포트 를 입력합니다. 이 연습에서는 기본 포트 21을 적용하도록 선택합니다.
이 연습에서는 호스트 이름을 사용하지 않으므로 가상 호스트 상자가 비어 있는지 확인합니다.
SSL 인증서 드롭다운이 "선택되지 않음"으로 설정되어 있고 SSL 허용 옵션이 선택되어 있는지 확인합니다.
이러한 항목을 완료했으면 다음을 클릭합니다.
마법사의 다음 페이지에서는 이러한 설정이 나중에 구성되므로 인증 또는 권한 부여 설정을 구성하지 않습니다. 마침을 클릭하여 마법사를 완료합니다.
요약
이 섹션에서 완료한 항목을 요약하기 위해 다음을 수행하여 FTP 게시를 "기본 웹 사이트"에 추가했습니다.
- 포트 21에서 로컬 루프백 IP 주소에 대한 웹 사이트에 대한 FTP 바인딩 추가
- FTP 사이트에 SSL(Secure Sockets Layer)을 사용하지 않도록 선택합니다.
참고
아직 인증 또는 권한 부여 설정을 사용하도록 설정하지 않았습니다.
멤버 자격 인증에 대한 ASP.NET 구성
ASP.NET 멤버 자격에 대한 로컬 SQL Server 구성
이 섹션에서는 멤버 자격 인증을 위한 ASP.NET 구성하기 위한 기본 프로세스를 설명합니다. 자세한 내용은 MSDN 웹 사이트의 ASP.NET 2.0 항목에서 방법: SQL Server 양식 인증 사용 항목의 "멤버 자격에 대한 ASP.NET 구성" 섹션을 참조하세요.
기존 SQL Server 액세스할 수 없는 경우 SQL Server 설치해야 합니다.
아직 ASP.NET 데이터베이스를 만들지 않은 경우 사용 중인 프레임워크 버전에 대해 다음 목록의 적절한 명령을 사용하여 SQL Server에 ASP.NET 데이터베이스를 빌드해야 합니다.
32비트 프레임워크:
"%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
64비트 프레임워크:
"%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
참고
위의 예제와 같이 "localhost" 대신 원격 SQL 서버를 사용하려면 방법: ASP.NET 2.0 문서의 SQL Server 양식 인증 사용 문서의 "배포 고려 사항" 섹션을 참조하세요.
FTP 확장성에 대한 COM 프로세스는 "NT AUTHORITY\Network Service"로 실행되므로 SQL Server ASP.NET 데이터베이스에 "NT AUTHORITY\Network Service" 계정을 추가해야 합니다. 이렇게 하려면 다음 단계를 수행합니다.
- SQL Server Enterprise 관리자를 엽니다.
- NT AUTHORITY\Network Service에 대한 SQL Server 로그인을 만듭니다.
- 데이터베이스 사용자를 만들어 Aspnetdb 데이터베이스에 대한 로그인 액세스 권한을 부여합니다.
- 데이터베이스 사용자를 aspnet_Membership_FullAccess 데이터베이스 역할에 추가합니다.
FTP 멤버 자격에 대한 ASP.NET 구성
다음 단계에서는 FTP 액세스에 대한 멤버 자격 인증을 허용하도록 ASP.NET 구성하는 프로세스를 설명합니다.
Windows 메모장과 같은 텍스트 편집기를 사용하여 사용 중인 프레임워크 버전에 적합한 경로에 있어야 하는 루트 web.config 파일을 엽니다.
32비트 프레임워크:
"%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config"
64비트 프레임워크:
"%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config"
아래쪽으로 스크롤하여 닫는 </구성> 태그 앞에 다음 코드를 붙여넣습니다.
<location path="GlobalFtpSite/ftpsvc"> <connectionStrings> <add connectionString="Server=localhost;Database=aspnetdb;Integrated Security=true" name="FtpLocalSQLServer" /> </connectionStrings> <system.web> <membership defaultProvider="FtpSqlMembershipProvider"> <providers> <add name="FtpSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="FtpLocalSQLServer" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" /> </providers> </membership> <roleManager defaultProvider="FtpSqlRoleProvider" enabled="true"> <providers> <add name="FtpSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="FtpLocalSQLServer" applicationName="/" /> </providers> </roleManager> </system.web> </location>
루트 web.config 파일을 저장하고 닫습니다.
요약
멤버 자격 인증에 대한 ASP.NET 구성했습니다. 이 섹션에서 완료한 항목을 요약하기 위해 다음을 수행하여 서버를 구성했습니다.
- ASP.NET 멤버 자격에 대한 로컬 SQL Server 구성
- FTP 멤버 자격에 대한 ASP.NET 구성
FTP 멤버 자격 인증 구성
이 섹션에서는 FTP 기반 멤버 자격 인증에서 나중에 사용할 사용자를 만드는 데 사용되는 기본 웹 사이트를 사용하여 멤버 자격 데이터베이스를 구성하는 방법을 설명합니다. 이렇게 하려면 다음 단계를 수행합니다.
필수 구성 요소 단계
- IIS(인터넷 정보 서비스) 관리자를 엽니다.
- 연결 트리의 위쪽 노드에서 컴퓨터를 확장 합니다 .
- 트리에서 사이트 노드를 확장합니다.
.NET 멤버 자격 설정 구성
1단계: 연결 문자열 추가
트리에서 기본 웹 사이트를 강조 표시하고 연결 문자열을 두 번 클릭한 다음 다음 단계를 수행합니다.
작업 창에서 추가...를 클릭합니다.
다음 옵션을 구성합니다.
- 이름: "FtpLocalSQLServer"
- 서버: "localhost"
- 데이터베이스: "aspnetdb"
확인을 클릭합니다.
2단계: 역할 공급자 추가
트리에서 기본 웹 사이트를 강조 표시하고 공급자를 두 번 클릭한 다음 다음 단계를 수행합니다.
드롭다운에서 .NET 역할을 선택합니다.
작업 창에서 추가...를 클릭합니다.
드롭다운에서 SqlRoleProvider 를 선택합니다.
다음 옵션을 구성합니다.
- 이름: "FtpSqlRoleProvider"
- 연결 문자열 이름: "FtpLocalSQLServer"
- 애플리케이션 이름: "/"
확인을 클릭합니다.
3단계: 멤버 자격 공급자 추가
트리에서 기본 웹 사이트를 강조 표시하고 공급자를 두 번 클릭한 다음 다음 단계를 수행합니다.
드롭다운에서 .NET 사용자를 선택합니다.
작업 창에서 추가...를 클릭합니다.
드롭다운에서 SqlMembershipProvider 를 선택합니다.
다음 옵션을 구성합니다.
- 이름: "FtpSqlMembershipProvider"
- 연결 문자열 이름: "FtpLocalSQLServer"
- 애플리케이션 이름: "/"
확인을 클릭합니다.
4단계: FTP 멤버 자격에 대한 역할 추가
트리에서 기본 웹 사이트를 강조 표시하고 .NET 역할을 두 번 클릭한 다음 다음 단계를 수행합니다.
연결에 대한 오류 대화 상자가 표시 될 수 있습니다. 그렇다면 확인을 클릭하여 오류 대화 상자를 닫은 다음, 다음 단계를 사용하여 기본 공급자를 구성합니다.
- 작업 창에서 기본 공급자 설정...을 클릭합니다.
- 드롭다운에서 FtpSqlRoleProvider 를 선택합니다.
- 확인을 클릭합니다.
작업 창에서 추가... 를 클릭합니다.
다음 옵션을 구성합니다.
- 이름: "ftprole"
확인을 클릭합니다.
5단계: FTP 멤버 자격에 대한 사용자 계정 추가
트리에서 기본 웹 사이트를 강조 표시하고 .NET 사용자를 두 번 클릭한 다음 다음 단계를 수행합니다.
연결에 대한 오류 대화 상자가 표시 될 수 있습니다. 그렇다면 확인을 클릭하여 오류 대화 상자를 닫은 다음, 다음 단계를 사용하여 기본 공급자를 구성합니다.
- 작업 창에서 기본 공급자 설정...을 클릭합니다.
- 드롭다운에서 FtpSqlMembershipProvider 를 선택합니다.
- 확인을 클릭합니다.
작업 창에서 추가 를 클릭합니다.
다음 옵션을 구성합니다.
- 사용자 이름: "ftpuser"
- Email: "ftpuser@localhost.local"
- 암호: "P@ssw0rd"
다음을 클릭합니다.
사용자를 "ftprole"에 추가한 다음 마침을 클릭합니다.
FTP에 대한 멤버 자격 인증 사용
멤버 자격 인증에 대한 FTP 구성
트리에서 기본 웹 사이트를 강조 표시하고 FTP 인증을 두 번 클릭한 다음 다음 단계를 수행합니다.
- 작업 창에서 사용자 지정 공급자...를 클릭합니다.
- AspNetAuth에 대한 확인란을 선택합니다.
- 확인을 클릭합니다.
이제 다음 두 가지 방법 중 하나를 사용하여 FTP 사용자에게 권한을 부여할 수 있습니다.
방법 1: 멤버 자격 역할에 대한 FTP 권한 부여 규칙 구성
트리에서 기본 웹 사이트를 강조 표시하고 FTP 권한 부여 규칙을 두 번 클릭한 다음 다음 단계를 수행합니다.
- 작업 창에서 규칙 허용 추가를 클릭합니다.
- 액세스 옵션 에 대해 지정된 역할 또는 사용자 그룹을 선택합니다.
- 역할 이름에 "ftprole"을 입력합니다.
- 권한 옵션에 대해 읽기 및 쓰기를 선택합니다.
- 확인을 클릭합니다.
방법 2: 멤버 자격 사용자에 대한 FTP 권한 부여 규칙 구성
트리에서 기본 웹 사이트를 강조 표시하고 FTP 권한 부여 규칙을 두 번 클릭한 다음 다음 단계를 수행합니다.
- 작업 창에서 규칙 허용 추가를 클릭합니다.
- 액세스 옵션에 대해 지정된 사용자를 선택합니다.
- 사용자 이름에 "ftpuser"를 입력합니다.
- 권한 옵션에 대해 읽기 및 쓰기를 선택합니다.
- 확인을 클릭합니다.
요약
이 섹션에서 완료한 항목을 요약하기 위해 다음을 수행하여 서버를 구성했습니다.
.NET 멤버 자격 설정 구성:
- 연결 문자열 추가
- 역할 공급자 추가
- 멤버 자격 공급자 추가
- FTP 멤버 자격에 대한 역할 추가
- FTP 멤버 자격에 대한 사용자 계정 추가
FTP에 대한 멤버 자격 인증 사용:
- 멤버 자격에 대한 FTP 인증 구성
- 멤버 자격 사용자에 대한 FTP 권한 부여 규칙 구성
- 멤버 자격 역할에 대한 FTP 권한 부여 규칙 구성
문제 해결
멤버 자격 역할을 사용하는 경우 다음 Microsoft 기술 자료 문서에 설명된 핫픽스를 설치해야 할 수 있습니다.
https://support.microsoft.com/kb/955136/
로그인을 시도할 때 다음 회신이 표시됩니다.
530-User cannot log in.
Win32 error:
Error details: .Net SqlClient Data Provider: An error has occurred while establishing a connection to the server.
When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server
does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
530 End
Login failed.
이 오류는 원격 연결을 허용하도록 SQL Server를 구성하지 않은 경우에 발생합니다.