Iis http请求如何与Active Directory一起工作?

Iis http请求如何与Active Directory一起工作?,iis,active-directory,Iis,Active Directory,我有一个ASP.NET MVC应用程序,可以根据Active Directory对用户进行身份验证 据我所知,这是用户登录其计算机时发生的过程: 用户在本地计算机上输入凭据 本地计算机检查是否已经有这些凭据的身份验证票证 如果没有,它将联系它能找到的第一个提供kerberos身份验证功能的ADS服务器 ADS机器根据LDAP数据库检查凭据 如果他们签出,kerberos将向客户机返回一个TGT(票证授予票证) 在AD中设置的特定持续时间内(通常为8~10小时),如果本地计算机用户希望连接到需要其

我有一个ASP.NET MVC应用程序,可以根据Active Directory对用户进行身份验证

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

  • 用户在本地计算机上输入凭据

  • 本地计算机检查是否已经有这些凭据的身份验证票证

  • 如果没有,它将联系它能找到的第一个提供kerberos身份验证功能的ADS服务器

  • ADS机器根据LDAP数据库检查凭据

  • 如果他们签出,kerberos将向客户机返回一个TGT(票证授予票证)

  • 在AD中设置的特定持续时间内(通常为8~10小时),如果本地计算机用户希望连接到需要其裸用户帐户中不存在权限的资源(即组成员身份、其他计算机和共享访问等),此TGT将绕过任何凭证检查

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

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

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

  • 这个流程本身并不是特定于web的。这就是所有服务在使用Kerberos时如何进行自我身份验证。

    如果您知道Fiddler或Wireshark之类的工具,则非常清楚,凭据是作为HTTP头的一部分传递的。