通过 SPNEGO/Kerberos 从域连接

信息安全 验证 kerberos
2021-08-26 13:26:56

当客户端在以下情况之一(非常相似)中从计算机连接时,是否可以使用来自同一域的帐户(显然)向域A中的SPNEGO/Kerberos 服务器进行身份验证:

  • 客户端通过域B的身份验证(不同的帐户,域之间不信任)或
  • 用户的计算机当前针对域A进行身份验证(本地登录,例如通过 VPN 访问 Intranet 时)

外部 SPNEGO/Kerberos 身份验证


当然,这两种情况都不能导致集成身份验证(因为主计算机身份验证不同于 Kerberos 中需要使用的身份验证)。但是,Internet Explorer(或 Firefox)是否可以要求提供凭据并使用 Kerberos?

使用 Kerberos 时,需要连接到 KDC(据我所知)。Windows 或浏览器是否能够为服务器的 SPN 定位 KDC?

1个回答

严格来说,这两种情况都是不可能的,因为它们违反了 Kerberos 的信任语义。根据定义,第一个场景有一个 TGT 进入域 B 并且域 A 不信任它。您的第二种情况类似,只是您甚至可能没有 TGT,因为它仅限本地。(我的声明假设我们谈论的是使用 Kerberos 票证作为身份验证,而不是您将明文凭据传递给服务器然后呈现给 KDC 以进行验证的情况)。

在这两种情况下,客户端应用程序都没有在域 A 中有效的 TGT 或服务票证,以便 HTTP 服务与 KDC 进行验证。

也就是说,在第二种情况下有一种方法可以做到这一点......但它假设您可以登录域 A,即使最初不是。这是通过使用 RunAs 运行您的客户端应用程序(Firefox、IE 等)来完成的,该 RunAs 对域 A 中的网络帐户进行身份验证。请参阅 runas cmd 的 /netonly 标志(https://technet.microsoft.com/en-us /图书馆/cc771525.aspx)。这通过建立另一个登录上下文并将应用程序作为该上下文运行来工作。Windows 在进行与 Kerberos 相关的调用时使用应用程序的用户上下文来初始化其 API,因此将有一个 TGT 进入域 A 以进行其会话。