何时使用
使用不带模拟的 Windows 身份验证的情况:
应用程序的用户已经有了可以由服务器验证的 Windows 帐户。
需要使用固定标识来访问下游资源(例如数据库)以便支持连接池。
更多信息
有关 Windows 身份验证的详细信息,请参见本章后面的“Windows 身份验证”。
有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。
有关 PrincipalPermission 要求的详细信息,请参见本指南“入门”部分的“主体”。
使用固定标识的 Windows 身份验证
Web.config 中的 <identity> 元素支持可选的用户名和密码属性,这样,您就可以为应用程序配置特定的固定标识以进行模拟。这显示在以下配置文件片段中。
<identity impersonate="true" userName="DomainName\UserName"
password="ClearTextPassword" />
何时使用
对于安全环境中的当前 .NET 框架版本(版本 1),由于以下两个原因,建议不要使用此方法:
不应以纯文本形式将用户名和密码存储在配置文件中,尤其是存储在虚拟目录中的配置文件。
在 Windows 2000 上,此方式将强制您授予 ASP.NET 进程帐户“充当操作系统的一部分”权限。一旦攻击者攻击 Web 应用程序进程,这将会降低 Web 应用程序的安全性并增加潜在的威胁。
.NET 框架 1.1 版将在 Windows 2000 上提供此方案的改进版本:
凭据将进行加密。
登录将由 IIS 进程执行,这样 ASP.NET 就不需要“充当操作系统的一部分”权限了。
表单身份验证
以下配置元素显示了如何在 Web.config 中以声明方式启用表单身份验证。
<authentication mode="Forms">
<forms loginUrl="logon.aspx" name="AuthCookie" timeout="60" path="/">
</forms>
</authentication>
可配置的安全设置
在使用表单身份验证时,可以使用以下授权选项:
Windows ACL
客户端请求的资源。请求的资源需要 ACL 以允许对匿名 Internet 用户帐户进行读取访问。(在使用表单身份验证时,应该将 IIS 配置为允许匿名访问)。
无法使用 ASP.NET 文件授权,因为它需要 Windows 身份验证。
应用程序访问的资源。根据 ASP.NET 进程标识,在应用程序所访问的资源(文件、文件夹、注册表项和 Active Directory 对象)上配置 Windows ACL。
URL 授权
在 Web.config 中配置 URL 授权。在表单身份验证中,用户名的格式取决于自定义数据存储、SQL Server 数据库或 Active Directory。
如果使用的是 SQL Server 数据存储:
<authorization>
<deny users="?" />
<allow users="Mary,Bob,Joe" roles="Manager,Sales" />
</authorization>
如果使用 Active Directory 作为数据存储,则以 X.500 格式显示用户名和组名:
<authorization>
<deny users="someAccount@domain.corp.yourCompany.com" />
<allow roles ="CN=Smith James,CN=FTE_northamerica,CN=Users,
DC=domain,DC=corp,DC=yourCompany,DC=com" />
</authorization>
程序安全性
可以使用下列编程安全选项:
主体权限要求
命令性
PrincipalPermission permCheck = new PrincipalPermission(
null, "Manager"

;
permCheck.Demand();
说明性
[PrincipalPermission(SecurityAction.Demand,
Role="Manager"

]
明确的角色检查 您可以使用 IPrincipal 接口执行角色检查。
IPrincipal.IsInRole("Manager"

;
何时使用
表单身份验证最适合于 Internet 应用程序。如果出现以下情况,则应该使用表单身份验证:
应用程序用户没有 Windows 帐户。
您希望用户通过使用 HTML 表单输入凭据的方式登录到应用程序。
更多信息
有关表单身份验证的详细信息,请参见本章后面的“表单身份验证”。
有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。
Passport 身份验证
以下配置元素显示了如何在 Web.config 中以声明方式启用 Passport 身份验证。
<authentication mode="Passport" />