IIS:对不在域中的客户端计算机使用 Kerberos

Mar*_*ins 5 windows iis internet-explorer kerberos active-directory

不属于域的一部分(但在网络上)的计算机是否可以通过 IIS8 发布的网站进行身份验证,其中该站点的身份验证是“Windows 身份验证”,仅使用“Negotiate:Kerberos”的单个提供程序(并禁用内核模式身份验证)?

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

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

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

Mic*_*l-O 3

Kerberos 不适用于不属于域的帐户/计算机。您有两种选择来实现您的目标:

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