更多信息
•
有关窗体身份验证的详细信息,请参见本章后面的“窗体身份验证“。
•
有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。
Passport 身份验证
以下配置元素显示了如何在 Web.config 中以声明方式启用 Passport 身份验证。 <authentication mode="Passport" />
何时使用
如果应用程序用户没有 Windows 帐户,并且您希望实现单次登录解决方案,则应该在 Internet 上使用 Passport 身份验证。如果用户以前使用 Passport 帐户在参与的 Passport 站点进行登录,则不必登录到使用 Passport 身份验证配置的站点。
返回页首
配置安全性
本节说明配置 ASP.NET Web 应用程序安全性所需的实际步骤。图 3 总结了这些情况。
图 3. 配置 ASP.NET 应用程序安全性
配置 IIS 设置
要配置 IIS 安全性,您必须执行以下步骤:
1.
(可选)安装 Web 服务器证书(如果需要 SSL 的话)。 有关详细信息,请参见“How To Set Up SSL on a Web Server”。
2.
配置 IIS 身份验证。
3.
(可选)配置客户端证书映射(如果使用证书身份验证的话)。
有关客户端证书映射的详细信息,请参见 Microsoft 知识库文章 Q313070“How To:Configure Client Certificate Mappings in Internet Information Services (IIS) 5.0”。
4.
设置文件和文件夹的 NTFS 权限。IIS 和 ASP.NET FileAuthorizationModule 共同检查已验证用户(或匿名 Internet 用户帐户)是否具有访问所请求文件的必要权限(根据 ACL 设置)。
配置 ASP.NET 设置
应用程序级别配置设置保存在 Web.config 文件中,这些文件位于应用程序的虚拟根目录或者(可选)其他子文件夹中(这些设置有时可以覆盖父文件夹设置)。
1.
配置身份验证。应该在应用程序虚拟根目录下的 Web.config 文件中基于每个应用程序对它进行设置(而不是在 Machine.config 中)。 <authentication mode="Windows|Forms|Passport|None" />
2.
配置模拟。默认情况下,ASP.NET 应用程序不使用模拟。应用程序使用配置的 ASP.NET 进程标识(通常为 ASPNET)运行,并且应用程序执行的所有资源访问都使用此标识。仅在以下情况下需要使用模拟:
•
您使用 Enterprise Services,并且要使用 Enterprise Services (COM+) 角色授权访问服务组件所提供的功能。
•
将 IIS 配置为使用匿名身份验证,而且要使用匿名 Internet 用户帐户进行资源访问。有关此方法的详细信息,请参见本章后面的“访问网络资源”。
•
您需要将已验证用户的安全性上下文传递到下一层(例如数据库)。
•
您已将传统的 ASP 应用程序移植到 ASP.NET,并且需要同样的模拟行为。默认情况下,传统 ASP 模拟调用者。
要配置 ASP.NET 模拟,请在应用程序的 Web.config 中使用下面的 <identity> 元素。 <identity impersonate="true" />
3.
配置授权。URL 授权确定用户或角色是否可以将特定的 HTTP 谓词(例如,GET、HEAD 和 POST)发送给特定的文件。要实现 URL 授权,请执行以下任务。
1.
将 <authorization> 元素添加到应用程序虚拟根目录下的 Web.config 文件中。
2.
使用 allow 和 deny 属性限制对用户和角色的访问。下面的示例摘自 Web.config,它使用 Windows 身份验证并允许 Bob 和 Mary 访问,但拒绝其他人访问。 <authorization>
<allow users="DomainName\Bob, DomainName\Mary" />
<deny users="*" />
</authorization>
重要 您需要在 <authorization> 元素的结尾添加 <denyusers="?"> 或 <denyusers="*">,否则将给所有已验证的标识授予访问权限。
URL 授权注意事项
在配置 URL 授权时,请注意以下几点:
•
"*" 指所有标识。
•
"?" 指未通过身份验证的标识(即匿名标识)。
•
要使 URL 授权能够正常工作,并不需要进行模拟。
•
Web.config 中的授权设置通常适用于当前目录和所有子目录中的所有文件(除非子目录包含它自己的 Web.config,并且该文件包含 <authorization> 元素。在这种情况下,子目录中的设置覆盖父目录的设置)。
注 URL 授权只适用于由 IIS 映射到 ASP.NET ISAPI (spnet_isapi.dll) 的文件类型。
可以使用 <location> 标记将授权设置应用于个别文件或目录。下面的示例显示了如何将授权应用于特定的文件 (Page.aspx)。 <location path="page.aspx" />
<authorization>
<allow users="DomainName\Bob, DomainName\Mary" />
<deny users="*" />
</authorization>
</location>
•
用于 URL 授权的用户和角色是由身份验证设置决定的:
•
如果设置了 <authenticationmode="Windows" >,则给 Windows 用户和组帐户授予访问权限。 用户名采用“DomainName\WindowsUserName”格式 角色名采用“DomainName\WindowsGroupName”格式
注 本地管理员组称为“BUILTIN\Administrators”。本地用户组称为“BUILTIN\Users”。
•
如果设置了 <authenticationmode="Forms" >,则根据存储在当前 HTTP 上下文中的 IPrincipal 对象的用户和角色进行授权。例如,如果使用窗体身份验证根据数据库验证用户的身份,则根据从数据库中检索的角色进行授权。
•
如果设置了 <authenticationmode="Passport" >,则根据从存储中检索的 Passport User ID (PUID) 或角色进行授权。例如,可以将 PUID 映射到特定的帐户和在 SQL Server 数据库或 Active Directory 中存储的一组角色。
注 此功能被内置到 Microsoft Windows .NET Server 2003 操作系统中。
•
如果设置了 <authenticationmode="None" >,则不能执行授权。"None" 指定您不想执行任何身份验证,或者不想使用任何 .NET 身份验证模块,而是使用自己的自定义机制。
但是,如果使用自定义身份验证,则应创建具有角色的 IPrincipal 对象,并将其存储到 HttpContext.User 中。在随后执行 URL 授权时,将根据 IPrincipal 对象中保存的用户和角色(无论以何种方式检索它们)执行授权。
URL 授权示例
以下列表列出了一些典型 URL 授权示例的语法:
•
拒绝匿名帐户访问 <deny users="?" />
•
拒绝所有用户访问 <deny users="*"/>
•
拒绝 Manager 角色访问 <deny roles="Manager"/>
•
窗体身份验证示例 <configuration>
<system.web>
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO"
loginUrl="login.aspx"
protection="All" timeout="60" />
</authentication>
<authorization>
<deny users="jdoe@somewhere.com" />
<deny users="?" />
</authorization>
</system.web>
</configuration>
注 <authorization> 元素可用于存储在 HttpContext.User 中的当前 IPrincipal 对象,也可用于存储在 HttpContext.Request.RequestType 中的 HTTP 数据传输方法。
保护资源
1.
使用 Windows ACL 保护资源,包括文件、文件夹和注册表项。
如果不使用模拟,则应用程序需要访问的任何资源的 ACL 必须授予 ASP.NET 进程帐户至少“读”访问权限。
如果使用模拟,文件和注册表项的 ACL 必须授予已验证用户(或匿名 Internet 用户帐户,如果匿名身份验证生效的话)至少“读”访问权限。
2.
保护 Web.config 和 Machine.config:
•
使用正确的 ACL。如果 ASP.NET 使用模拟,则模拟的标识需要“读”访问权限。否则,ASP.NET 进行标识需要“读”访问权限。对 Web.config 的 Machine.config 使用以下 ACL。
系统:完全控制
管理员:完全控制
进程标识或模拟的标识:读
如果没有模拟匿名 Internet 用户帐户 (IUSR_MACHINE),则应该拒绝该帐户的访问。
注 如果将应用程序映射到 UNC 共享,则 UNC 标识也需要读取配置文件的访问权限。
•
删除不需要的 HTTP 模拟。Machine.config 包含一组默认的 HTTP 模拟(在 <httpModules> 元素内)。它们是:
WindowsAuthenticationModule
FormsAuthenticationModule
PassportAuthenticationModule
UrlAuthorizationModule
FileAuthorizationModule
OutputCacheModule
SessionStateModule
如果应用程序没有使用特定的模拟,请将其删除,以免将来在应用程序中出现与该模拟有关的任何潜在的安全问题。
3.
(可选)将 <location> 元素与 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> [C语言系列]NET 中C#的switch语句的语法 [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]Boost库在XP+Visual C++.net中的安装 [常用软件]新配色面板:Paint.Net3.0RC1官方下载 [常用软件]用内建的“Net Meeting”聊天 [VB.NET程序]Henry的VB.NET之旅(三)—共享成员 [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构 [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体 [VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET) [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
|