![代理 Kerberos 身份验证 - Kerberos 服务票证问题](https://linux22.com/image/669026/%E4%BB%A3%E7%90%86%20Kerberos%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%20-%20Kerberos%20%E6%9C%8D%E5%8A%A1%E7%A5%A8%E8%AF%81%E9%97%AE%E9%A2%98.png)
我有一个 BlueCoat ProxySG,它能够通过 Kerberos 验证用户身份。它设置为“代理”,因此要求对每个新的 TCP 连接进行用户身份验证。用户拥有单点登录,并且当网络服务提示时,他们的 PC 会自动传递 Windows 登录凭据。问题是,在一个有许多后台连接的网站上(本例中为 www.bbc.com),用户会在很长时间后开始收到凭据弹出窗口(此时大多数页面和图片已经加载)。我相信每个使用此网站的用户都会遇到这种情况。
在从用户 PC 捕获的数据包中,Kerberos 身份验证似乎在每次连接尝试(GET 和 CONNECT 请求)中都有效,因为用户使用 GET/CONNECT 请求正确传递了服务票证。但突然开始联系 KDC 以获取新的服务票证……在这种情况下,它实际上会出错,出现 PRE_AUTH_REQUIRED 错误,并且必须从 KDC 获取新的 KRBTGT,然后才能再次尝试代理的 TGS_REQ。这时似乎会出现凭据弹出窗口。
- 我的理解是,服务票存储在用户的 Kerb 托盘中,可以重复使用,直到需要续订(票本身上注明了续订日期)。这是正确的理解吗?
- 为什么代理突然需要不同的票?
- 当 Kerberos 不起作用时,BlueCoat ProxySG 应该自动回退到 NTLM,为什么不这样做?(当不使用 Kerberos 作为主要身份验证方法时,NTLM 工作正常)
提前致谢!
答案1
事实证明,问题根本不是 Kerberos。设置了两个身份验证领域 - 1 个用于 IWA Direct,1 个用于 IWA BCAAA。BCAAA 领域没有 Kerberos 身份验证。连接到 bbc.com 时,用户使用 Kerberos 领域进行身份验证。由于身份验证过程设置为代理,因此每次尝试新连接时都需要进行身份验证。但是,BBC 网站(可能是某个广告网站)上的后台 URL 正在触及另一个在 Kerberos 身份验证策略规则之前列出的身份验证策略规则。它被设置为代理 IP(每 15 分钟使用 IP 代理进行一次身份验证),并且只有 NTLM 和基本身份验证可用。因此,它会显示一个授权弹出窗口,因为其余站点会话均由 Kerberos 领域授权。