【问题标题】:How do http requests work with Active Directory?http 请求如何与 Active Directory 一起使用?
【发布时间】:2018-08-26 06:45:21
【问题描述】:

我有一个针对 Active Directory 对用户进行身份验证的 ASP.NET MVC 应用程序。

据我了解,这是用户登录其计算机时发生的过程:

  1. 用户在本地计算机上输入凭据。

  2. 本地机器检查它是否已经拥有这些凭据的身份验证票。

  3. 如果没有,它会联系它可以找到的第一个提供 kerberos 身份验证功能的 ADS 服务器

  4. ADS 机器根据 LDAP 数据库检查凭据。

  5. 如果他们签出,kerberos 会向客户端计算机返回一个 TGT(ticket-granting-ticket)

  6. 1234563组成员资格、额外的机器和共享访问等)

我的问题是,当浏览器为我的应用程序向它发出请求时,IIS 是如何知道 TGT 的?操作系统是否在对每个网站的每个出站 http 请求中都将其发送出去?

【问题讨论】:

标签: iis active-directory


【解决方案1】:

服务器 (IIS) 将通过返回带有 WWW-Authenticate 标头的 HTTP 401 错误代码向客户端(浏览器)指示它需要进行身份验证。客户端检测到这一点并确定它是否可以正确进行身份验证。其工作方式如下:

  1. 通过检查请求者的服务主体名称来确定请求者是谁。它以{type}/{fully.qualified.domain} 的形式存在,例如HTTP/resource.domain.com。此 SPN 映射到 AD 中的计算机或服务帐户。如果此 SPN 未注册,客户端将回退到 NTLM 等较小的协议。
  2. 本地计算机使用 TGT 从 AD 请求服务票证。 AD 验证 TGT 并在请求中查找 SPN,如果找到,则会根据与 SPN 关联的帐户密码创建一个服务票证。
  3. 客户端通过Authorization: Negotiate YII...标头向服务器发送服务票证。
  4. 服务器使用提供的密码解密服务票证,通过域加入、Windows 服务运行方式配置或密钥表。
  5. 服务器将解密的服务票证的内容转换为 Windows 身份。
  6. 向应用程序显示身份。

此流程本质上不是特定于网络的。这就是所有服务在使用 Kerberos 时对其自身进行身份验证的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多