【发布时间】:2018-02-08 17:30:57
【问题描述】:
我使用NodeSSPI 对 TypeScript 中的单点登录进行了概念验证。这很有效,我获得了我在公司 AD 域上登录的用户名 - 无需输入任何帐户信息或凭据。但我想详细了解这是如何实现的,因为它可以在 IE 和 Chrome 中开箱即用。我找到了这个MSDN article about NTLM,上面写着:
- 登录用户的用户名发送到服务器
- 服务器生成随机数挑战并发送给客户端
- 客户端使用用户密码哈希加密挑战并将其发送回服务器
- 服务器向 DC 发送用户名、质询和质询响应
- DC 将 PW 与数据库进行比较,如果匹配则对用户进行身份验证
我特别想知道第 1 步和第 2 步:这是在哪里发生的?怎么样?转移到服务器的用户名?它是http请求的一部分吗?我查看了来自 chrome 开发人员工具的请求,但看不到任何标头或其他信息表明例如我的 AD 用户名发送到服务器。
请注意:这些问题仅适用于用户提供没有凭据的 SSO!因为当用户输入他的凭据时,这很清楚。
【问题讨论】:
-
IE 浏览器有一个名为“启用集成 Windows 身份验证”的选项,您可以在其中使用当前登录用户的详细信息进行身份验证。查看此链接了解更多详情 - blogs.msdn.microsoft.com/ieinternals/2011/07/06/…
标签: active-directory single-sign-on windows-authentication ntlm