【问题标题】:IIS: Using Kerberos with client computers that are not on the domainIIS:将 Kerberos 与不在域中的客户端计算机一起使用
【发布时间】:2013-01-08 21:45:59
【问题描述】:

不属于域(但在网络上)的计算机能否针对由 IIS8 发布的网站进行身份验证,其中该站点的身份验证是“Windows 身份验证”,仅使用“协商: Kerberos”(并禁用内核模式身份验证)?

我之所以这么问,是因为我正在尝试这样做,但我无法通过对站点的身份验证(但仅是尝试将身份验证传递给数据库)。我在对客户端的响应中看到“WWW-Authenticate: Negotiate”标头,但客户端似乎只在后续(重新)请求中发送“NTLM Type1:协商”(NTLMSSP)。要么,要么我错误地解释了 Fiddler2 的结果!

我正在使用 Kerberos,因为大多数客户端都是域计算机,我需要将用户凭据从 Web 应用程序传回数据库。我希望我能够对非域计算机执行相同的操作,并且它们只会被提示输入用户名/域/密码,该用户名/域/密码将被验证并转换为服务器上的 Kerberos 票证。

请注意,出于测试目的,Windows 8 既是服务器又是客户端。在生产中,服务器将是 Windows 2008 Server R2,客户端将主要是 Windows 7(尽管会有一些 Windows 8 客户端)。

【问题讨论】:

    标签: windows internet-explorer iis active-directory kerberos


    【解决方案1】:

    Kerberos 将在不属于域的帐户/计算机上工作。 您有两种选择来实现您的目标:

    1. 使用基本身份验证请求用户数据并将其传递给LogonUserEx。请参阅this 获取答案。
    2. 通过其他方式对用户进行身份验证,并使用S4U2self(协议转换)。

    【讨论】:

    • 我有一种可怕的感觉,事情会是这样。我想,目前,该应用程序仅适用于属于域的计算机。我曾希望它可供任何仅位于 LAN 上的计算机上的任何域用户使用,但我需要能够为本地用户使用自动 Windows 身份验证,同时将凭据从 IIS 服务器传递到 SQL 服务器。
    • @MartinRobins,你期待什么?如果某人不是域的一部分,他/她显然不能使用 Kerberos。没有隐藏的魔法。
    • 我期待与 NTLM 类似的体验;如果计算机不在域中,弹出一个登录对话框,然后对域提供的凭据进行身份验证。然后在任何双跳中使用这些凭据。我现在明白,对于 Kerberos,浏览器实际上首先负责从域中获取这些凭据并将它们与请求一起发送 - 因此它无法在不在域中的计算机上运行。#
    • 这真的很老了,但是假设您的 KDC 可以通过 Internet 访问,为什么客户端不能只是 'kinit user@DOMAIN' 并获得可用于身份验证的票证?我有很多 *nix 机器,用户可以在这些机器上启动并获取 kerberos 票证,使用票证访问远程服务器,但 nix 机器本身不是域的一部分。
    • @CVVS,仅仅因为机器没有加入域,并不意味着用户不能kinit进入域。这是解耦的。是的,如果您的 KDC 可以通过网络获得并且所有 DNS 条目都可以,那也应该可以。
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2011-08-17
    • 2013-11-04
    • 2014-04-26
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多