在 IIS 7 中使用 .NET 成員資格驗證設定 FTP
相容性
版本 | 備註 |
---|---|
IIS 7.5 | FTP 7.5 服務隨附于 Windows 7 和 Windows Server 2008 R2 中的 IIS 7.5 功能。 |
IIS 7.0 | IIS 7.0 隨附 FTP 7.0 和 FTP 7.5 服務,需要從下列 URL 下載並安裝服務: https://www.iis.net/downloads/microsoft/ftp 。 |
簡介
Microsoft 已建立已完全重寫 Windows Server® 2008 的新 FTP 服務。 這個新的 FTP 服務包含許多新功能,可讓 Web 作者比之前更妥善地發佈內容,並提供 Web 系統管理員更多的安全性和部署選項。
本檔會逐步引導您設定預設網站以進行 FTP 成員資格型驗證。
注意
本檔是使用安裝在本機網頁伺服器上的 SQL Server 實例所撰寫。
必要條件
需要下列專案才能完成本文中的程式:
IIS 7.0 必須安裝在您的 Windows Server 2008 上,而且必須設定下列各項:
- IIS 7.0 安裝所建立的預設網站仍必須存在。
- 必須安裝 Internet Information Services Manager。
必須安裝新的 FTP 服務。 您可以使用下列其中一個連結,從 https://www.iis.net/ 網站下載並安裝 FTP 服務:
- 適用于 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) 。
注意
您尚未啟用任何驗證或授權設定。
設定成員資格驗證 ASP.NET
為您的本機SQL Server設定 ASP.NET 成員資格
本節說明設定成員資格驗證 ASP.NET 的基本程式。 For detailed information, please see the "Configure ASP.NET for Membership" section in the How To: Use Forms Authentication with SQL Server in ASP.NET 2.0 topic on the MSDN web site.
如果您沒有現有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
注意
若要使用遠端 SQL Server 而非 「localhost」,如上述範例所示,請參閱如何:在 ASP.NET 2.0 文章中搭配使用表單驗證與SQL Server中的一節。
由於 FTP 擴充性的 COM 程式會以 「NT AUTHORITY\Network Service」 的形式執行,因此您必須將 「NT AUTHORITY\Network Service」 帳戶新增至SQL Server上的 ASP.NET 資料庫。 若要這樣做,請使用下列步驟:
- 開啟SQL Server Enterprise管理員。
- 建立 NT AUTHORITY\Network Service 的SQL Server登入。
- 藉由建立資料庫使用者,授與 Aspnetdb 資料庫的登入存取權。
- 將資料庫使用者新增至aspnet_Membership_FullAccess資料庫角色。
設定 FTP 成員資格的 ASP.NET
下列步驟說明設定 ASP.NET 以允許 FTP 存取成員資格驗證的程式。
使用 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 型成員資格驗證稍後將使用的使用者。 若要這樣做,請使用下列步驟:
必要條件步驟
- 開啟 [Internet Information Services (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 知識庫文章中所述的 Hotfix:
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 設定為接受遠端連線時,就會發生此錯誤。