Kerberos 获取错误用户的票据

Kerberos 获取错误用户的票据

在工作中,我有两个活动目录/域帐户:

  • username- 我使用这个登录我的电脑
  • adm_username- 该用户是我负责的一些服务器的管理员

我们有一个使用 kerberos/negotiate 身份验证的内部 Web 应用程序。

我目前遇到以下问题:

  • 当我从任何浏览器访问内部 Web 应用程序并以普通用户身份登录时username,浏览器会发送标头,表明我是adm_username

klist执行 http 请求之前的输出,包含与我访问文件共享相关的票证:

C:\Users\username>klist

Current LogonId is 0:0x238dad3

Cached Tickets: (3)

#0>     Client: username @ MYDOMAIN.COM
        Server: krbtgt/MYDOMAIN.COM @ MYDOMAIN.COM
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40e00000 -> forwardable renewable initial pre_authent
        Start Time: 1/7/2021 9:27:13 (local)
        End Time:   1/7/2021 19:27:13 (local)
        Renew Time: 1/14/2021 9:27:13 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0x1 -> PRIMARY
        Kdc Called: NOOSLDC01.mydomain.com

#1>     Client: username @ MYDOMAIN.COM
        Server: cifs/RKNWVDFS002P.mydomain.com @ MYDOMAIN.COM
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40a00000 -> forwardable renewable pre_authent
        Start Time: 1/7/2021 9:27:13 (local)
        End Time:   1/7/2021 19:27:13 (local)
        Renew Time: 1/14/2021 9:27:13 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0
        Kdc Called: NOOSLDC01.mydomain.com

#2>     Client: username @ MYDOMAIN.COM
        Server: cifs/NOOSLDC01.mydomain.com @ MYDOMAIN.COM
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40a40000 -> forwardable renewable pre_authent ok_as_delegate
        Start Time: 1/7/2021 9:27:13 (local)
        End Time:   1/7/2021 19:27:13 (local)
        Renew Time: 1/14/2021 9:27:13 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0
        Kdc Called: NOOSLDC01.mydomain.com

然后我用浏览器访问内部网站,klist再次执行,现在我有两张额外的票:

#3> Client: adm_username @ mydomain.COM
    Server: krbtgt/mydomain.COM @ mydomain.COM
    KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
    Ticket Flags 0x40e00000 -> forwardable renewable initial pre_authent 
    Start Time: 1/7/2021 9:37:20 (local)
    End Time:   1/7/2021 19:37:20 (local)
    Renew Time: 1/14/2021 9:37:20 (local)
    Session Key Type: AES-256-CTS-HMAC-SHA1-96
    Cache Flags: 0x1 -> PRIMARY 
    Kdc Called: NOOSLDC01

#4> Client: adm_username @ mydomain.COM
    Server: HTTP/rknwveva001p.mydomain.com @ mydomain.COM
    KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
    Ticket Flags 0x40a00000 -> forwardable renewable pre_authent 
    Start Time: 1/7/2021 9:37:20 (local)
    End Time:   1/7/2021 19:37:20 (local)
    Renew Time: 1/14/2021 9:37:20 (local)
    Session Key Type: RSADSI RC4-HMAC(NT)
    Cache Flags: 0 
    Kdc Called: NOOSLDC01.mydomain.com

注意到我获得的票数与预期adm_username不符username

其他信息:

  • 即使我重新启动后也会发生这种情况。
  • 以前从未发生过。在发生这种情况的那天,我使用adm_username(通过执行net use \\server\share /user:MYDOMAIN\adm_username)访问了一些 UNC 路径。这是我能想到的唯一一件不寻常的事情,我怀疑这与此有关。
  • 更新:如果我执行 a,也会发生同样的事情(只有我获得 cifs 票证而不是 http),dir \\servername\c$因此 Windows 似乎以某种方式缓存了前一个net use

问题:

  • 这是什么原因造成的?这可能是客户端的问题还是 AD/服务器的问题?
  • 怎么修?

答案1

解决我的问题的方法是使用控制面板 | 用户帐户 | 凭据管理器,然后为服务器/用户名组合的 Windows 凭据选择“删除”。

内部 Web 应用程序由我使用访问文件共享的其中一台服务器提供服务adm_username,然后 Windows Kerberos 系统会告诉浏览器在访问 Web 服务器时使用此用户名。

这似乎是我的问题的根本原因。

相关内容