Eri*_*ric 11 active-directory domain kerberos authentication authorization
我对 Kerberos 在 Active Directory 环境中的工作原理以及它用于在网络上对用户和工作站进行身份验证的方法有基本的了解,但我的问题是..因为 Kerberos 依赖于发布安全令牌,然后最终用户使用该令牌进行访问网络资源,不在域中的系统(笔记本电脑)如何仅使用 Active Directory 用户的用户名和密码访问相同的网络资源?
我想如果只使用用户凭据,Kerberos 会生成一个安全令牌并将其发布给系统会更有意义,但似乎应该有更多的安全性来防止非域系统访问网络资源。
如果有人能启发我,我将不胜感激!
不在域中的系统(笔记本电脑)如何仅使用 Active Directory 用户的用户名和密码访问相同的网络资源?
这取决于涉及哪些“网络资源”。在您登录的加入域的 Windows 计算机上,至少有两个客户端 Kerberos 身份在起作用:
还有host/workstation@DOMAIN,但这通常是在主机上运行的服务的标识,可以从其他地方访问。如果主机上的特权进程想要做某事——比如,使用 Kerberos 认证的动态 DNS 将其名称添加到 DNS——它将使用它的身份来执行此操作,workstation$@DOMAIN。但是,如果您在登录会话中自己访问某些资源——比如 CIFS 网络共享或经过身份验证的 HTTP URL——那么客户端身份就是您的主体名称 user@DOMAIN(使用您输入的登录密码)。从你的问题来看,你似乎认为涉及到某种组合;不是,它们是分开的。
这就是为什么使用 Kerberos 从其他平台访问基于 Windows 的资源没有问题的原因。您也可以在 Linux 机器上输入“kinit user”,输入密码以从域控制器获取 Kerberos 凭证 (TGT),然后使用 Firefox 访问 IIS 上经过 Kerberos 验证的网页。所有这些的协议都是标准的,除了您的用户凭证之外,您不需要任何东西。
先前的回答声称在这种情况下需要 NTLM;那是错误的(尽管肯定可以使用它)。但是,当您从非域计算机访问某些资源并提示您输入用户名和密码时,您不一定知道实际使用的是哪种身份验证方法。它可能会使用 Kerberos。它也可能只是回退到基于密码的机制,它将您的用户名和密码发送到服务器进行验证,然后缓存您的密码,这样您就不必重新输入它。许多协议都允许通过抽象方案(如 SASL)实现。您必须查看电线以了解发生了什么。
老问题,但答案不是特别准确。
Windows 并不特别关心您的计算机是否已加入域。在此身份验证阶段的域加入实际上只是一个提示,告诉客户端如果没有足够的信息,它可能应该尝试联系哪个域。
Kerberos 身份验证的工作方式是查看身份验证期间提供给它的凭据。如果提供的用户名有足够的信息来解析域控制器,它会立即尝试 Kerberos。如果用户没有提供足够的信息供客户端查找 DC,它只会回退到 NTLM。它基本上是这样工作的:
用户类型 \\foo\share
提示用户输入凭据,输入 user@bar.domain.com 和密码
Windows 看到 bar.domain.com 并执行称为 DC 位置的操作,其中包括尝试SRV _kerberos._tcp.bar.domain.com
从指向域控制器或不指向域控制器的 DNS 解析。
如果返回 DC,Windows 会尝试使用 (2) 中输入的凭据从 DC 获取 TGT。
如果失败,它可能会根据返回的错误执行以下操作之一:
a) 回到 (3) 并进行循环
b) 退回到 NTLM
c) 尝试彻底失败
现在,它为用户提供了一个 TGT,并将其填充到票证缓存中(请参阅 参考资料klist.exe
)。
通过它可以与之通信的 TGT 和 DC,它为 SPN 请求服务票证cifs/foo
。
如果 DC 找到具有该 SPN 的服务帐户,则返回服务票证,否则返回错误并且 Windows 回退到 NTLM。
服务票据被缓存。
客户端将服务票发送给\\foo\share
SMB ,然后 SMB 完成它的工作。
这或多或少是它在工作组或加入域的计算机上的工作方式。唯一的区别是第 2 步和第 3 步不同。在加入域的计算机上,凭证是已知的,域也是已知的,因此它使用本机 SSO 凭证。仍在尝试 DC 位置,但不必对用户的域进行推理,因为它已经知道了。
所以这里的技巧是在步骤 (2) 中输入凭据,以便 Windows 有足够的信息来查找 DC。这意味着使用完全限定的域名,而不是您添加的任何自定义友好 UPN。这也意味着传统的 NetBIOS 方法bar\user
可能不起作用。如果你有足够的遗留基础设施来支持它,也许它会支持它(还记得 NetBEUI 吗?)。
在这种情况下使用 NTLM...
http://msdn.microsoft.com/en-us/library/windows/desktop/aa378749(v=vs.85).aspx
http://en.wikipedia.org/wiki/NTLM
归档时间: |
|
查看次数: |
22774 次 |
最近记录: |