频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

ASP.NET 2.0 中的 Windows 身份验证

来源: 作者: 出处:巧巧读书 2006-08-09 进入讨论组
上一页 1 2 3 4 5 下一页 

 

    身份验证模块

    asp.net 2.0 在计算机级别的 Web.config 文件中定义一组 HTTP 模块。其中包括大量身份验证模块,如下所示:

<httpModules>

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

</httpModules>

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

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

    windowsauthenticationmodule

    如果 Web.config 文件包含以下元素,则激活 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 调用 Win32 函数并获得该用户所属的 Windows 组的列表。这些组用于填充 windowsprincipal 角色列表。

    · WindowsAuthenticationModule 类将 windowsprincipal 对象存储在 httpcontext.user 属性中。随后,授权模块用它对经过身份验证的用户授权。

    注:defaultauthenticationmodule 类(也是 ASP.NET 管道的一部分)将 thread.currentprincipal 属性设置为与 httpcontext.user 属性相同的值。它在处理 authenticaterequest 事件之后进行此操作。

    授权模块

    WindowsAuthenticationModule 类完成其处理之后,如果未拒绝请求,则调用授权模块。授权模块也在计算机级别的 Web.config 文件中的 httpmodules 元素中定义,如下所示:

<httpModules>
  <add name="UrlAuthorization"
    type="System.Web.Security.UrlAuthorizationModule" />
  <add name="FileAuthorization"
    type="System.Web.Security.FileAuthorizationModule" />
  <add name="AnonymousIdentification"
    type="System.Web.Security.AnonymousIdentificationModule" />
</httpModules>

    urlauthorizationmodule

    调用 urlauthorizationmodule 类时,它在计算机级别或应用程序特定的 Web.config 文件中查找 authorization 元素。如果存在该元素,则 urlauthorizationmodule 类从 httpcontext.user 属性检索 iprincipal 对象,然后使用指定的动词(GET、POST 等)来确定是否授权该用户访问请求的资源。

    fileauthorizationmodule

    接下来,调用 fileauthorizationmodule 类。它检查 httpcontext.user.identity 属性中的 iidentity 对象是否是 windowsidentity 类的一个实例。如果 iidentity 对象不是 windowsidentity 类的一个实例,则 fileauthorizationmodule 类停止处理。

    如果存在 windowsidentity 类的一个实例,则 fileauthorizationmodule 类调用 accesscheck Win32 函数(通过 P/Invoke)来确定是否授权经过身份验证的客户端访问请求的文件。如果该文件的安全描述符的随机访问控制列表 (DACL) 中至少包含一个 read 访问控制项 (ACE),则允许该请求继续。否则,fileauthorizationmodule 类调用 httpapplication.completerequest 方法并将状态码 401 返回到客户端。

本文:http://www.qqread.com/aspdotnet/n196681.html 更多文章 更多内容请看Windows操作系统安装Windows权限设置Windows操作系统安全集专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章