默认 FTP 身份验证设置 <authentication>
概述
<authentication>
元素指定 FTP 站点的身份验证设置。 身份验证设置仅在站点级别配置,但 FTP <authorization>
设置可以按 URL 进行配置。
可为 FTP 站点配置四种不同的身份验证形式:
匿名身份验证:这种形式的身份验证允许访问 FTP 站点且无需在服务器或域中有用户帐户,最常用于公共 FTP 站点。 用户通常使用 ftp 或 anonymous 的用户名登录,大多数用户将使用其电子邮件地址作为密码,但这不是必需的。
基本身份验证:这种形式的身份验证要求用户在登录前必须在服务器或域中拥有有效用户帐户。
注意:由于文件传输协议 (FTP) 的设计,用户名和密码以纯文本形式通过 FTP 传输,因此它们容易被网络发现。 因此,建议使用 SSL 进行基本身份验证。
客户端证书身份验证:这种形式的身份验证使用客户端证书对 FTP 客户端进行身份验证。
自定义身份验证:这种形式的身份验证使用自定义身份验证提供程序来验证用户名和密码。 FTP 7.0 和 FTP 7.5 附带两个自定义身份验证提供程序:
- ASP.NET 成员身份身份验证:使用 ASP.NET 成员身份数据库来验证用户名和密码。 有关详细信息,请参阅 Microsoft IIS.NET 网站上的使用 .NET 成员资格身份验证配置 FTP 主题。
- IIS 管理器身份验证:使用 IIS 管理器配置来验证用户名和密码。 有关详细信息,请参阅 Microsoft IIS.NET 网站上的使用 IIS 7.0 管理器身份验证配置 FTP 主题。
使用自定义身份验证提供程序的主要优点是,无需在服务器或域上创建用户帐户。 这可以提高网络的安全性。
兼容性
版本 | 说明 |
---|---|
IIS 10.0 | <authentication> 元素在 IIS 10.0 中未进行修改。 |
IIS 8.5 | <authentication> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <authentication> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <security> 元素的 <authentication> 元素作为 IIS 7.5 的功能提供。 |
IIS 7.0 | <security> 元素的 <authentication> 元素是在 IIS 7.0 的独立下载项 FTP 7.0 中引入的。 |
IIS 6.0 | <ftpServer> 元素及其子元素替换位于 LM/MSFTPSVC 元数据库路径中的 IIS 6.0 FTP 设置。 |
在 Windows 7 和 Windows Server 2008 R2 中,FTP 7.5 服务作为 IIS 7.5 的功能提供,因此无需再下载 FTP 服务。
安装
若要支持 Web 服务器的 FTP 发布,必须安装 FTP 服务。 为此,请按照以下步骤操作。
Windows Server 2012 或 Windows Server 2012 R2
在任务栏上,单击 “服务器管理器”。
在“服务器管理器”中,单击“管理”菜单,然后单击“添加角色和功能”。
在“添加角色和功能”向导中,单击“下一步”。 选择安装类型,然后单击“下一步”。 选择目标服务器,然后单击“下一步”。
在“服务器角色”页上,展开“Web 服务器 (IIS)”,然后选择“FTP 服务器”。
单击“下一步”,然后在“选择功能”页上,再次单击“下一步”。
在“确认安装选择”页上,单击“安装”。
在“结果” 页面中单击“关闭” 。
Windows 8 或 Windows 8.1
在“开始”屏幕上,将指针一直移动到左下角,右键单击“开始”按钮,然后单击“控制面板”。
在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
展开“Internet Information Services”,然后选择“FTP 服务器”。
单击“确定”。
单击“关闭” 。
Windows Server 2008 R2
在任务栏上,单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
在“服务器管理器”层次结构窗格中,展开“角色”,然后单击“Web 服务器(IIS)”。
在“Web 服务器 (IIS)”窗格中,滚动到“角色服务”部分,然后单击“添加角色服务”。
在“添加角色服务向导”的“选择角色服务”页,展开“FTP 服务器”。
选择“FTP 服务”。
单击 “下一步” 。
在“确认安装选择”页中,单击“安装”。
在“结果” 页面中单击“关闭” 。
Windows 7
在任务栏上,单击“开始”,然后单击“控制面板”。
在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
展开“Internet Information Services”,然后展开“FTP 服务器”。
选择“FTP 服务”。
单击“确定”。
Windows Server 2008 或 Windows Vista
从以下 URL 下载安装包:
按照以下演练中的说明安装 FTP 服务:
操作方式
如何对 FTP 站点启用或禁用匿名身份验证
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
在“连接”窗格中,展开服务器名称,展开“站点”节点,然后单击站点名称。
在站点的“主页”窗格中,双击“FTP 身份验证”功能。
在“FTP 身份验证”页,选择“匿名身份验证”。
如何使用 FTP 站点向导创建具有匿名读取访问权限的 FTP 站点
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
在“连接”窗格中,单击树中的“站点”节点。
右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”。
显示“添加 FTP 站点”向导时:
在“添加 FTP 站点”向导的第二页:
从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者选择接受默认选择“所有未分配”。
在“端口”框中输入 FTP 站点的 TCP/IP 端口。 默认情况下,FTP 站点和客户端使用端口 21。 (注意:若要指定隐式 FTPS,需要使用端口 990。)
若要使用 FTP 虚拟主机名,请选择“启用虚拟主机名”框,然后在“虚拟主机”框中输入虚拟主机名。
对于 SSL 选项,请选择以下选项之一:
- 选择“无 SSL”以禁用 SSL 选项。
- 选择“允许 SSL”以允许 FTP 客户端在连接到 FTP 服务器时选择性地使用 FTP over SSL。
- 选择“要求 SSL”以允许 FTP 客户端在连接到 FTP 服务器时始终使用 FTP over SSL。
- 如果选择“允许 SSL”或“要求 SSL”,请从“SSL 证书”下拉菜单中选择证书。
在向导的下一页:
如何对 FTP 站点启用或禁用基本身份验证
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
在“连接”窗格中,展开服务器名称,展开“站点”节点,然后单击站点名称。
在站点的“主页”窗格中,双击“FTP 身份验证”功能。
在“操作”窗格中,单击“启用”以启用基本身份验证,或单击“禁用”以禁用基本身份验证。
如何使用 FTP 站点向导创建具有基本身份验证和读/写访问权限的 FTP 站点
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
在“连接”窗格中,单击树中的“站点”节点。
右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”。
显示“添加 FTP 站点”向导时:
在“添加 FTP 站点”向导的第二页:
从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者选择接受默认选择“所有未分配”。
在“端口”框中输入 FTP 站点的 TCP/IP 端口。 默认情况下,FTP 站点和客户端使用端口 21。 (注意:若要指定隐式 FTPS,需要使用端口 990。)
若要使用 FTP 虚拟主机名,请选择“启用虚拟主机名”框,然后在“虚拟主机”框中输入虚拟主机名。
对于 SSL 选项,请选择以下选项之一:
- 选择“无 SSL”以禁用 SSL 选项。
- 选择“允许 SSL”以允许 FTP 客户端在连接到 FTP 服务器时选择性地使用 FTP over SSL。
- 选择“要求 SSL”以允许 FTP 客户端在连接到 FTP 服务器时始终使用 FTP over SSL。
- 如果选择“允许 SSL”或“要求 SSL”,请从“SSL 证书”下拉菜单中选择证书。
在向导的下一页:
配置
特性
无。
子元素
元素 | 说明 |
---|---|
anonymousAuthentication |
可选元素。 指定 FTP 站点的匿名身份验证设置。 |
basicAuthentication |
可选元素。 指定 FTP 站点的基本身份验证设置。 |
clientCertAuthentication |
可选元素。 指定 FTP 站点的客户端证书身份验证设置。 |
customAuthentication |
可选元素。 指定 FTP 站点的自定义身份验证设置。 注意:自定义身份验证是通过自定义身份验证提供程序实现的。 |
配置示例
以下配置示例将默认禁用匿名身份验证并启用基本身份验证。
<siteDefaults>
<ftpServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<basicAuthentication enabled="true" />
</authentication>
</security>
</ftpServer>
</siteDefaults>
代码示例
以下配置示例将默认禁用匿名身份验证并启用基本身份验证。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.authentication.anonymousAuthentication.enabled:"False" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.authentication.basicAuthentication.enabled:"True" /commit:apphost
注意
使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost
。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
ConfigurationElement ftpServerElement = siteDefaultsElement.GetChildElement("ftpServer");
ConfigurationElement securityElement = ftpServerElement.GetChildElement("security");
ConfigurationElement authenticationElement = securityElement.GetChildElement("authentication");
ConfigurationElement anonymousAuthenticationElement = authenticationElement.GetChildElement("anonymousAuthentication");
anonymousAuthenticationElement["enabled"] = false;
ConfigurationElement basicAuthenticationElement = authenticationElement.GetChildElement("basicAuthentication");
basicAuthenticationElement["enabled"] = true;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")
Dim ftpServerElement As ConfigurationElement = siteDefaultsElement.GetChildElement("ftpServer")
Dim securityElement As ConfigurationElement = ftpServerElement.GetChildElement("security")
Dim authenticationElement As ConfigurationElement = securityElement.GetChildElement("authentication")
Dim anonymousAuthenticationElement As ConfigurationElement = authenticationElement.GetChildElement("anonymousAuthentication")
anonymousAuthenticationElement("enabled") = False
Dim basicAuthenticationElement As ConfigurationElement = authenticationElement.GetChildElement("basicAuthentication")
basicAuthenticationElement("enabled") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");
var ftpServerElement = siteDefaultsElement.ChildElements.Item("ftpServer");
var securityElement = ftpServerElement.ChildElements.Item("security");
var authenticationElement = securityElement.ChildElements.Item("authentication");
var anonymousAuthenticationElement = authenticationElement.ChildElements.Item("anonymousAuthentication");
anonymousAuthenticationElement.Properties.Item("enabled").Value = false;
var basicAuthenticationElement = authenticationElement.ChildElements.Item("basicAuthentication");
basicAuthenticationElement.Properties.Item("enabled").Value = true;
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")
Set ftpServerElement = siteDefaultsElement.ChildElements.Item("ftpServer")
Set securityElement = ftpServerElement.ChildElements.Item("security")
Set authenticationElement = securityElement.ChildElements.Item("authentication")
Set anonymousAuthenticationElement = authenticationElement.ChildElements.Item("anonymousAuthentication")
anonymousAuthenticationElement.Properties.Item("enabled").Value = False
Set basicAuthenticationElement = authenticationElement.ChildElements.Item("basicAuthentication")
basicAuthenticationElement.Properties.Item("enabled").Value = true
adminManager.CommitChanges()