Windows域中的NTLM SSO如何工作?

时间:2018-02-08 17:30:57

标签: active-directory single-sign-on windows-authentication ntlm

我使用NodeSSPI在TypeScript中进行了单点登录的概念验证。这有效,我得到了我在公司AD域登录的用户名 - 没有输入任何帐户信息或凭据。但我想知道这是如何可行的,因为它适用于IE和Chrome开箱即用。我发现这个MSDN article about NTLM说:

  1. 已登录用户的用户名发送到服务器
  2. 服务器生成随机数挑战并将其发送给客户
  3. 客户端使用用户密码哈希加密质询并将其发送回服务器
  4. 服务器向DC发送用户名,质询和质询 - 响应
  5. DC将PW与数据库进行比较,并在匹配
  6. 的情况下对用户进行身份验证

    我对第1步和第2步感到特别奇怪:这会发生在哪里?怎么样,例如用户名转移到服务器?它是http请求的一部分吗?我查看了Chrome开发人员工具的请求,看不到任何标题或其他信息,表明例如我的AD用户名被发送到服务器。

    请注意:这些问题仅适用于SSO,其中凭据由用户提供!当用户输入他的凭证时,这是明确的。

1 个答案:

答案 0 :(得分:0)

  

它是http请求的一部分吗?

是。如RFC 4559中所述,您应该从服务器的响应中看到WWW-Authenticate:Negotiate标头,结果是来自客户端的Authorization标头。

如果开发人员工具没有显示此信息,请返回网络捕获。