日期:2009-11-27  浏览次数:20398 次

身份验证和授权

ASP.NET 与 IIS 一起使用以支持身份验证,并使用基本、简要和 Windows 身份验证。ASP.NET 支持 Microsoft Passport 身份验证服务,该服务提供单一登录服务和对用户配置文件服务的支持。ASP.NET 还为要使用基于窗体的身份验证的应用程序提供可靠的服务。基于窗体的身份验证使用 Cookie 鉴别用户的身份,并允许应用程序执行自己的凭据验证。

认识到 ASP.NET 身份验证服务取决于 IIS 提供的身份验证服务很重要。例如,若要在 IIS 应用程序中使用基本身份验证,必须使用 Internet 服务管理器工具为应用程序配置基本身份验证的使用。

ASP.NET 提供两类授权服务:

根据 ACL 或资源权限进行检查,以确定已经过验证的用户帐户能否访问资源。

URL 授权,它授权 Web 空间各部分的标识。

为阐释差异,请考虑这样一个方案,在该方案中应用程序被配置为允许使用 IUSR_MYMACHINE 帐户进行匿名访问。在授权对 ASP.NET 页(如“/default.aspx”)的请求后,根据 ACL 检查该文件(例如“c:\inetpub\wwwroot\default.aspx”)以确定 IUSR_MYMACHINE 帐户是否具有读取该文件的权限。如果有,则授权访问。文件授权自动执行。

对于 URL 授权,根据为 ASP.NET 应用程序计算的配置数据对匿名用户进行检查。如果允许访问请求的 URL,则授权该请求。在这种情况下,ASP.NET 检查匿名用户是否具有对 /Default.aspx 的访问权(即检查根据的是 URL 本身而不是 URL 最终解析到的文件)。

可能看起来差异很小,但它使应用程序能够使用像基于窗体的身份验证或护照身份验证(在此身份验证中用户与计算机或域帐户并不对应)这样的身份验证方案。此外,它还启用对虚拟资源的授权,这类资源没有物理文件作为基础。例如,应用程序可选择将以 .stk 结尾的文件的所有请求映射到某一处理程序,该处理程序基于查询字符串中存在的变量提供常用引号。在这种情况下,不存在执行 ACL 检查所依据的物理 .stk,因此 URL 授权用于控制对虚拟资源的访问。

文件授权的执行依据的始终是由 IIS 提供的经过身份验证的帐户。如果允许匿名访问,则该帐户是经过配置的匿名帐户。否则,它使用 NT 帐户。这与 ASP 的工作方式完全相同。

在“资源管理器”属性页中使用“安全”选项卡为给定的文件或目录设置文件 ACL。URL 授权被配置为 ASP.NET 框架应用程序的一部分,并在授权用户和角色中有完整的描述。

若要激活 ASP.NET 身份验证服务,必须在应用程序的配置文件中配置 <authentication> 元素。该元素可具有下表中列出的任何值。

Value 说明

无 没有 ASP.NET 身份验证服务是活动的。注意,IIS 身份验证服务仍可以存在。

Windows ASP.NET 身份验证服务将 WindowsPrincipal (System.Security.Principal.WindowsPrincipal) 附加到当前请求以启用对 NT 用户或组的授权。

窗体 ASP.NET 身份验证服务管理 Cookie 并将未经身份验证的用户重定向到登录页。它通常与 IIS 选项一起使用以允许匿名访问应用程序。

护照 ASP.NET 身份验证服务为护照 SDK(必须安装在计算机上)提供的服务提供了一个方便的包装。

例如,下列配置文件为应用程序启用基于窗体 (Cookie) 的身份验证:

<configuration>

<system.web>

<authentication mode="Forms"/>

</system.web>

</configuration>