知识大全 ASP.NET 2.0 中的Windows身份验证

Posted

篇首语:最淡的墨水,也胜过最强的记性。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 2.0 中的Windows身份验证相关的知识,希望对你有一定的参考价值。

ASP.NET 2.0 中的Windows身份验证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  本教程阐释在 ASP NET 版中 IIS 集成 Windows 身份验证以及 ASP NET 的Windows 身份验证的工作机制 同时 阐释 NTLM 和 Kerberos 身份验证的工作机制 此外 本教程还阐释 WindowsAuthenticationModule 类如何构造 WindowsPrincipal 和 WindowsIdentity 对象 然后将这些对象附加到当前的 ASP NET Web 请求以表示经过身份验证的用户

  概述

  身份验证是一个验证客户端身份的过程 通常采用指定的第三方授权方式 客户端可能是最终用户 计算机 应用程序或服务 客户端的标识称为安全原则 为了使用服务器应用程序进行验证 客户端提供某种形式的凭据来允许服务器验证客户端的标识 确认了客户端的标识后 应用程序可以授予执行操作和访问资源的原则

  如果应用程序使用 Active Directory 用户存储 则应该使用集成 Windows 身份验证 对 ASP NET 应用程序使用集成 Windows 身份验证时 最好的方法是使用 ASP NET 的 Windows 身份验证提供程序附带的 Internet 信息服务 (IIS) 身份验证方法 使用该方法 将自动创建一个 WindowsPrincipal 对象(封装一个 WindowsIdentity 对象)来表示经过身份验证的用户 您无需编写任何身份验证特定的代码

  ASP NET 还支持使用 Windows 身份验证的自定义解决方案(避开了 IIS 身份验证) 例如 可以编写一个根据 Active Directory 检查用户凭据的自定义 ISAPI 筛选器 使用该方法 必须手动创建一个 WindowsPrincipal 对象

  ASP NET 身份验证

  IIS 向 ASP NET 传递代表经过身份验证的用户或匿名用户帐户的令牌 该令牌在一个包含在 IPrincipal 对象中的 IIdentity 对象中维护 IPrincipal 对象进而附加到当前 Web 请求线程 可以通过 HttpContext User 属性访问 IPrincipal 和 IIdentity 对象 这些对象和该属性由身份验证模块设置 这些模块作为 HTTP 模块实现并作为 ASP NET 管道的一个标准部分进行调用 如图 所示

  

  图 ASP NET 管道

  ASP NET 管道模型包含一个 HttpApplication 对象 多个 HTTP 模块对象 以及一个 HTTP 处理程序对象及其相关的工厂对象 HttpRuntime 对象用于处理序列的开头 在整个请求生命周期中 HttpContext 对象用于传递有关请求和响应的详细信息

  有关 ASP NET 请求生命周期的详细信息 请参阅 ASP NET Life Cycle 网址是 (en US VS ) aspx

  身份验证模块

  ASP NET 在计算机级别的 nfig 文件中定义一组 HTTP 模块 其中包括大量身份验证模块 如下所示

  

   <Modules>  <add name= WindowsAuthentication     type= System Web Security WindowsAuthenticationModule />  <add name= FormsAuthentication     type= System Web Security FormsAuthenticationModule />  <add name= PassportAuthentication     type= System Web Security PassportAuthenticationModule /></Modules>

  只加载一个身份验证模块 这取决于该配置文件的 authentication 元素中指定了哪种身份验证模式 该身份验证模块创建一个 IPrincipal 对象并将它存储在 HttpContext User 属性中 这是很关键的 因为其他授权模块使用该 IPrincipal 对象作出授权决定

  当 IIS 中启用匿名访问且 authentication 元素的 mode 属性设置为 none 时 有一个特殊模块将默认的匿名原则添加到 HttpContext User 属性中 因此 在进行身份验证之后 HttpContext User 绝不是一个空引用(在 Visual Basic 中为 Nothing)

  WindowsAuthenticationModule

  如果 nfig 文件包含以下元素 则激活 WindowsAuthenticationModule 类

  

  <authentication mode= Windows />

  WindowsAuthenticationModule 类负责创建 WindowsPrincipal 和 WindowsIdentity 对象来表示经过身份验证的用户 并且负责将这些对象附加到当前 Web 请求

  对于 Windows 身份验证 遵循以下步骤

  WindowsAuthenticationModule 使用从 IIS 传递到 ASP NET 的 Windows 访问令牌创建一个 WindowsPrincipal 对象 该令牌包装在 HttpContext 类的 WorkerRequest 属性中 引发 AuthenticateRequest 事件时 WindowsAuthenticationModule 从 HttpContext 类检索该令牌并创建 WindowsPrincipal 对象 HttpContext User 用该 WindowsPrincipal 对象进行设置 它表示所有经过身份验证的模块和 ASP NET 页的经过身份验证的用户的安全上下文

  WindowsAuthenticationModule 类使用 P/Invoke 调用 Win 函数并获得该用户所属的 Windows 组的列表 这些组用于填充 WindowsPrincipal 角色列表

  WindowsAuthenticationModule 类将 WindowsPrincipal 对象存储在 HttpContext User 属性中 随后 授权模块用它对经过身份验证的用户授权

cha138/Article/program/net/201311/13618

相关参考

知识大全 体验ASP.NET 2.0中的BuildProvider

体验ASP.NET2.0中的BuildProvider  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 理解ASP.NET 2.0中的单点登录

理解ASP.NET2.0中的单点登录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要 

知识大全 ASP.Net 2.0中的5个数据控件

ASP.Net2.0中的5个数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!第一篇的入门帖就

知识大全 ASP.NET 2.0 中的异步页功能应用

ASP.NET2.0中的异步页功能应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!ASPNET提

知识大全 ASP.NET 2.0 中的数据源控件

ASP.NET2.0中的数据源控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET引

知识大全 ASP.NET 2.0 中的创建母版页

ASP.NET2.0中的创建母版页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  虽然母版页和内

知识大全 抢先试用ASP.NET 2.0中的新型安全控件

抢先试用ASP.NET2.0中的新型安全控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引

知识大全 Web Parts在ASP.NET 2.0中的应用

WebParts在ASP.NET2.0中的应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  W

知识大全 ASP.NET 2.0中实现模板中的数据绑定

ASP.NET2.0中实现模板中的数据绑定  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  模板化

知识大全 如何由ASP.NET 1.1移植到ASP.NET 2.0

如何由ASP.NET1.1移植到ASP.NET2.0  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!