曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5078|回复: 0
打印 上一主题 下一主题

[IIS] IIS 的身份认证

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-11-15 13:41:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用 IIS 来搭建网站,默认情况下,它允许所有用户连接,但也可以利用用户名+密码的方式限定特定用户来访问,验证用户名和密码的方式主要有:匿名身份验证(Anonymous Authentication),基本身份验证(Basic Authentication),摘要式身份验证(Digest Authentication) 与 Windows 身份验证 (Windows Authentication) 。

系统默认只启用匿名身份验证,其它 3 种认证可以通过“添加角色服务”的方式来安装。

可以针对文件,文件夹或整个网站启用身份验证。下面以默认网站 "Default Web Site" 为例,说明如何设置身份验证:

1. 双击“Default Web Site” 窗口中的“身份验证”:


会看到几种验证方式的名称与状态:


由上图可以看到,默认时采用的是匿名身份验证。对于某一项,可以对其右击,在弹出菜单中选择“启用”或者是“禁用”。

客户端在访问网站时,它先用匿名身份验证来连接网站,如果网站的开启了匿名身份验证,那么客户端就能连接成功。这里,尝试将匿名身份验证禁用,此时用浏览器浏览时,会看到 401 的错误,并且有提示:“未授权: 由于凭据无效,访问被拒绝。”:


如果网站同时启用 4 种验证方式,那么就会有一个验证的顺序:
匿名身份验证 ---> Windows 验证 ---> 摘要式身份验证 ---> 基本身份验证

也就是说,客户端先利用匿名身份验证来连接网站,成功则正常访问,失败则用其它的验证方式来验证。

匿名身份验证
如果网站启用匿名身份验证,那么任何用户都可以直接利用匿名来连接并访问网站,而不需要输入用户名和密码。所有浏览器都支持匿名身份验证。

在 Windows Server 2008 R2 中,内置了一个 IUSR 的特殊组,当用户利用匿名连接网站时,网站实际就是用 IUSR 来代表这个匿名用户,因此用户的权限就是与 IUSR 的权限相同。

我们可以代表匿名用户的用户账户,也就是将来访的匿名用户映射到本地的某一个其他的用户上。如果网站正好假设在域控制器上的话,就需要先在本地安全数据库或 Active Directory 数据库内创建此账户,然后右击“匿名身份验证”,在弹出菜单中选择“编辑”,在弹出的“编辑匿名身份验证凭据”对话框中单击“设置”按钮,然后输入相应的用户名和密码,如下图所示:


基本身份验证
该验证方式会要求输入用户名和密码,绝大部分浏览器都支持该方法,但用户发送给网站的用户名和密码是不加密的,因此容易被嗅探窃取。如果使用基本身份验证的话,应该搭配其他可确保数据安全发送的措施,比如使用 SSL 连接。

为了测试该验证方式,首先将匿名身份验证设为禁用状态,因为匿名验证方式比基本身份验证的优先级高。

右击“基本身份验证”,在弹出菜单中选择“编辑”,弹出“编辑基本身份验证设置”对话框:


“默认域”的概念:
用户访问网站时,可以使用域用户账户(如 GROAD/easy),或本地用户账户(DNS1/easy)。如果输入的用户名没有指明是本地域或用户账户的话(如直接输入 easy),那么网站如何验证该用户账户和密码呢?
此时如果“默认域”中指定域名的话(如 GROAD),那么网站会将用户账户视为域中账户,如果“默认域”中没有指定域名的话,那么有以下两种情况:

(1). 若 IIS 计算机是成员服务器或独立服务器,则以本地安全数据库来检查用户名和密码。
(2). 若 IIS 计算机是域控制器的话,则以本域 Active Directory 数据库来检查用户名和密码。

此外,“领域” 是供用户参考的文字,显示在登录界面上。

下面填写为非域情况,该服务器是台独立服务器,编辑框中填写的内容如下:



当用浏览器链接时,会看到:


摘要式身份验证
摘要式身份验证也要求输入用户名和密码,不过它i基本身份验证要安全,因为用户名和密码是经过 MD5 加密处理的,然后将产生的哈希值发送到网站。必须具备以下条件才能使用摘要式身份验证:
1. 浏览器必须支持 HTTP1.1 。
2. IIS 计算机必须是 Active Directory 域的成员服务器或域控制器。
3. 用户账户必须是 Active Directory 域用户,而且此账户必须与 IIS 计算机位于同一个域,或者是信任域中。

提示:IIS7 中的摘要式身份验证就是 IIS6 中的“高级摘要式身份验证”(在 IIS6 中需要选择“使用可回复加密来存放密码”)。

Windows 身份验证
Windows 身份验证也要求输入用户名和密码,而且用户名和密码在发送之前也会经过哈希处理以保证安全性。Windws 身份验证支持下面两种验证协议:

1. Kerberos v5 验证
如果 IIS 计算机是 Active Directory 域的成员,而且客户端也支持 Kerberos v5 验证,那么 IIS 网站会采用 Keberos v5 验证方法,一般情况下,Kerveros 会被防火墙所阻挡。

2. NTLM
如果 IIS 计算机不是 Active Directory 域的成员或客户端不支持 kerberos v5 验证,那么 IIS 网站会采用 NTLM 的验证方法。一般来说,代理服务器不支持 NTLM 。

基于上述 2 个特点,Windows 身份验证比较适合于用来连接内网中的网站。客户端利用 Windows 验证来连接内网网站时,会自动将目前的用户名和密码(登录时所输入的用户名和密码)来连接网站,如果此用户没有权限连接网站的话,就会要求用户自行输入用户名和密码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-19 06:01 , Processed in 0.078671 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表