在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
如果只为一小部分已知用户开发 Web 程序,且这些用户都有 Windows 帐号,在这种情况下,Windows 验证是一个适合的解决方案。它可以利用已有的用户和用户分组信息进行系统验证。 和表单验证不同,Windows 验证没有在 ASP.NET 中内置。Windows 验证将验证的责任交给了 IIS。IIS 通过浏览器验证 Windows 用户帐号的凭证。如果用户验证成功,IIS 则允许这次网页请求,并将用户和角色信息传递给 ASP.NET,这样你的程序就可以用几乎和表单验证一样的方式处理这些信息。
1. 为什么使用 Windows 验证?
2. 为什么不使用 Windows 验证?Windows 验证有潜在的风险,Windows 用户帐号可能拥有对 Web 服务器或者其他网络内机器的权限。你不会冒险给网站用户授予这些权限吧? IIS 使用的一些验证的方法需要用户在他们的机器上有相应的软件。这使得使用非微软操作系统或没有 IE 浏览器的用户就无法使用它。 Windows 验证没有给你任何对验证过程的控制。无法通过编程管理 Windows 账户信息,也无法储存用户特定的信息。
3. Windows 验证机制部署 Windows 验证时,IIS 有 3 种策略对它每次收到的请求进行验证。
3.1 Basic 验证支持最广泛的验证协议是 Basic 验证。客户端验证时,浏览器显示一个登录框用来输入用户名和密码。当用户提供了信息后,信息被传送到 Web 服务器,一旦 IIS 收到验证数据,它会使用相应 Windows 帐号来验证网站用户。 Basic 验证的关键限制在于它是不安全的,至少它本身是不安全的。用户名和密码以纯文本格式传输,数据以 Base64 的形式编码(非加密)为字符串,网络窃听者可以非常容易的读取。 只在安全的场合下使用 Basic 验证。比如,无需保护用户凭证信息的环境下,或和一个 HTTP 网络加密协议(如 SSL)捆绑时。
3.2 Digest 验证也需要用户通过浏览器显示的登录对话框提供帐号信息。但不同的是,Digest 验证传递密码的散列串,而不是密码本身,这样你没有使用 SSL 也可以防止密码被窃取。 使用 Digest 验证用户的过程如下:
对于每个验证请求,nonce 值都会变化,这确保了安全机制。但 IIS Digest 验证的一个限制是需要验证的虚拟目录必需在一个 Windows 活动目录域控制器上运行或者受其控制才能起作用。
3.3 集成 Windows 验证这个模式对于基于广域网或基于局域网的企业内联网应用程序是最方便的验证标准,它无需执行任何客户端的交互即可执行验证。当 IIS 要求客户端验证时,浏览器会发送一个代表当前用户的 Windows 账户身份的标志,但如果 Web 服务器无法使用这个信息进行验证,它会显示一个登录框让用户输入一个不同的用户名和密码。 客户端和 Web 服务器必须在同一个局域网或企业内联网上。这是因为集成 Windows 验证实际上并不发送用户名和密码信息。相反,它和它所属的域服务器或者活动目录实例互相协作,以此登录并获得将验证信息发送到 Web 服务器的客户端机器上。
用来传输验证信息的协议有两个:NTLM(NT LAN Manager,NT 局域网管理)验证和 Kerberos 5,根据客户端和服务器操作系统的版本进行选择。如果客户端和服务器端操作系统的版本都在 Windows 2000或者更高,而且两台机器都运行在一个活动目录中,Kerberos 被用作验证协议,否则使用 NTLM 验证。
3.3.1 NTLM 验证NTLM 验证 通过一种基于客户端和服务器端三向握手的 盘问/响应 机制来验证客户端。
整个过程,密码从来都不会在网络上进行传输,这使得 NTLM 非常安全,但还有另一种更安全的协议。
3.3.2 Kerberos 验证简介就目前来讲,Kerberos 5 是最安全的协议。它是由 IETF(Internet Engineering Task Force,因特网工程任务组)创建的一个著名的公共标准,实现了一个基于票据的验证协议。如果激活了集成的 Windows 验证,在下面的情况中会自动使用 Kerberos。
Kerberos 的内容能写一本书。这里只学习一些基本概念来帮助理解必需的配置任务以及每一个功能在什么时候会起作用。比如 NTLM 和 Kerberos 之间一个很大的区别就是 Kerberos 同时支持身份模拟和委托,而 NTLM 只支持身份模拟。
Kerberos 系统的核心组件是 KDC(Key Distribution Center,密钥分发中心),负责发送票据和管理凭证。在 Windows 世界里,活动目录的首要域控制器扮演着 KDC 的角色。验证过程涉及的每一个参与者(客户端和服务器)必须信任 KDC。KDC 管理所有用户和计算机的账号,并发送验证票据和会话票据。 Kerberos 和 NTLM 还有另外一个很大的不同:NTLM 在工作组环境下运行,无需中央授权。Kerberos 则需要一个中央授权来发送任意类型的票据,因此,要使 Kerberos 起作用,需要连接到一个活动目录的域控制器。
Kerberos 验证和票据的基本流程:
每一个票据(会话票据、票据授予票据)都有一定的功能。这些功能只是某些特性(如身份模拟或委托)所需的一组定义好的属性。比如,有了特定的属性,它们可以在服务器上模拟客户端用户的身份或者将客户端身份委托给另外一个服务器。 |
请发表评论