文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
 websphere   .net framework
您现在的位置: IT文谷 >> 开发平台 >> .net framework >> ASP.NET >> 文章正文
ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证
ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证
ASP.NET中的Windows身份验证

ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证

摘要:

   本教程阐释在 ASP.NET 2.0 版中,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 对象。

本文阐释在具有 IIS 6.0 的 ASP.NET 2.0 中 Windows 身份验证的工作机制。

 

IIS 身份验证

   如果 ASP.NET 针对 Windows 身份验证进行配置,则 ASP.NET 依靠 IIS,利用配置好的身份验证模式对其客户端进行身份验证。IIS 通过检查特定应用程序的元数据库设置来确定其身份验证模式。成功验证某个用户的身份后,IIS 将代表经过身份验证的用户的 Windows 令牌传递给宿主 ASP.NET 的 ASP.NET 辅助进程 (w3wp.exe)。如果应用程序使用在 IIS 中配置的虚拟目录来支持匿名访问,该令牌代表匿名 Internet 用户帐户;否则,该令牌代表经过身份验证的用户。

iis 支持以下身份验证模式:

匿名。如果不需要对客户端进行身份验证(或者使用自定义身份验证机制,如窗体身份验证),则可将 IIS 配置为允许匿名访问。在该事件中,IIS 创建一个 Windows 令牌来表示具有相同匿名(或客人)帐户的所有匿名用户。默认的匿名帐户是 IUSR_MACHINENAME,其中 MACHINENAME 是安装期间指定的计算机的 NetBIOS 名称。

基本。基本身份验证要求用户以用户名和密码的形式提供凭据来证明他们的身份。基本身份验证基于 Internet 标准 RFC 2617,所有常用浏览器都支持它。用户的凭据以未加密的 Base64 编码格式从浏览器传送到 Web 服务器。为了更好保护这些凭据,只要在使用基本身份验证同时再使用安全套接字层 (SSL) 即可。由于 Web 服务器包含未加密的用户凭据,因此 ASP.NET 应用程序可以模拟调用方并使用他们的凭据来访问网络资源。

集成的 Windows。集成的 Windows 身份验证(以前称为 NTLM,也称为 Windows NT 质询/应答身份验证,Windows NT Challenge/Response)是使用 Kerberos v5 身份验证还是 NTLM 身份验证,取决于客户端和服务器的配置。服务器与客户端协商确定要使用的协议。如果满足以下条件,则使用 Kerberos 身份验证:

asp.net Web 应用程序正在 NetworkService 帐户或自定义域帐户下运行。如果应用程序在本地帐户(如 Windows 2000 Server 上的 ASPNET 帐户)上运行,则使用 NTLM 身份验证。

域帐户的 Active Directory 中有一个服务主要名称 (SPN),该域帐户用于运行客户端进行身份验证所使用的服务。

客户端计算机和服务器计算机至少需要运行 Windows 2000 Server,且处在相同的(即信任的)Windows 域中。

默认情况下,对于 Windows Server 2003 操作系统启用集成 Windows 身份验证。然而,如果 Windows Server 2003 Service Pack 1 (SP1) 作为 Windows Server 2003 操作系统整合安装的一部分进行安装,则默认情况下禁用集成 Windows 身份验证。如果使用 SP1 升级 Windows Server 2003,则集成 Windows 身份验证的设置与其 Windows Server 2003 设置相同。

    应该使用集成 Windows 身份验证而不是基本身份验证,因为前者避免了通过网络传输用户凭据。由于 Kerberos v5 身份验证支持相互身份验证,因此用户还可以对正在连接的服务器进行身份验证。

    集成 Windows 身份验证最适合于 Intranet 环境,其中的客户端计算机和 Web 服务器计算机都是相同(即信任的)域的一部分。

 

NTLM 身份验证

    ntlm 是用于 Windows NT 和 Windows 2000 Server 工作组环境的身份验证协议。它还用在必须对 Windows NT 系统进行身份验证的混合 Windows 2000 Active Directory 域环境中。当 Windows 2000 Server 转换为不存在下层 Windows NT 域控制器的本机模式时,禁用 NTLM。然后 Kerberos v5 变成企业级的默认身份验证协议。

ntlm 身份验证机制

图 1 显示 NTLM 协议。


1. NTLM 质询/应答机制

下面概述质询/应答机制:

用户请求访问。用户尝试通过提供用户凭据登录到客户端。登录前,客户端计算机缓存密码的哈希值并放弃密码。客户端向服务器发送一个请求,该请求包括用户名以及纯文本格式的请求。

服务器发送质询消息。服务器生成一个称为质询的 16 字节随机数(即 NONCE),并将它发送到客户端。

客户端发送应答消息。客户端使用由用户的密码生成的一个密码哈希值来加密服务器发送的质询。它以应答的形式将这个加密的质询发回到服务器。

服务器将质询和应答发送到域控制器。服务器将用户名、原始质询以及应答从客户端计算机发送到域控制器。

域控制器比较质询和应答以对用户进行身份验证。域控制器获取该用户的密码哈希值,然后使用该哈希值对原始质询进行加密。接下来,域控制器将加密的质询与客户端计算机的应答进行比较。如果匹配,域控制器则发送该用户已经过身份验证的服务器确认。

服务器向客户端发送应答。假定凭据有效,服务器授予对所请求的服务或资源的客户端访问权。

 

Kerberos 身份验证

与 NTLM 身份验证相比,Kerberos 身份验证具有以下优势:

相互身份验证。当客户端使用 Kerberos v5 协议对特定服务器上的特定服务进行身份验证,Kerberos 为客户端提供网络上恶意代码不会模拟该服务的保证。

委托支持。使用 Kerberos 身份验证对客户端进行身份验证的服务器可以模拟这些客户端,并使用该客户端的安全上下文访问网络资源。

性能。Kerberos 身份验证提供优于 NTLM 身份验证的改进的性能。

简化的信任管理。具有多个域的网络不再需要一组复杂的显式、点对点信任关系。

互操作性。Microsoft 实现的 Kerberos 协议基于向 Internet 工程任务组 (IETF) 推荐的标准跟踪规范。因此,Windows 2000 中协议的实现为与其他网络的互操作奠定了基础(其中 Kerberos 版本 5 用于身份验证)。

kerberos 身份验证机制

图 2 显示 Kerberos 身份验证协议的简化视图。


2. Kerberos 身份验证

 

[1] [2] [3] 下一页  

[1] [2] [3] 下一页  

ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证


  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    基于.NET的多线程编程入门
    Microsoft .NET 框架资源基础
    VS2005常用插件搜罗
    .net中用GDI+提高gif图片保存画质
    VS.NET:通过Web服务瞄准电子商务
    对象设计中创建VS使用
    安装/初始化/个性化DotNetNuke
    介绍dotnet原动力(DNN)
    GDI+编程10个基本技巧
    DTE .NET工程的自动化编译
    .Net中如何操作IIS的原理分析
    VS.NETRC5无法创建Add-IN工程
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 在本网BBS上发表言论者,文责自负。
    ③ 如您因版权等问题需要与本网联络,请在30日内联系 。
    ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证
    ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证2006-7-15ASP.NET中的Windows身份验证

    .net framework专题
    人气排行
  • 此栏目下没有文章
  • 最近更新
    普通文章技术介绍 新数据网格简介
    普通文章.NET 开发人员该下载的十个必备
    普通文章深入剖析Asp.net资源文件
    普通文章通过事例学习.net的WebForms技
    普通文章ASP.NET Tips1---合并多个字段
    普通文章微软明年1月份出台.NET专业开发
    普通文章微软下月底前完成Vista大部分功
    普通文章揭开微软 .NET 认证考试的面纱
    普通文章Visual Studio:Microsoft开发工
    普通文章Visual Studio:Microsoft开发工
    全站热点       
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷社区
    Tel: 0577-65690019    E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2006 wengu.org 文谷 All Rights Reserved
    浙ICP备05000327号