You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一IIS服务器上第二个站点的ASP.NET Kerberos双跳模拟失效问题

Kerberos双跳授权异常问题(Site2无法委托客户端身份到SQL)

环境背景

现有内网Kerberos双跳架构:Client->IIS->SQL,端到端采用Windows集成身份验证,IIS应用池标识与SQL服务账户均为独立域账户。该架构原在Windows Server 2008上稳定运行10年,迁移至Windows Server 2022/IIS后正常运行2个月(域控制器同步升级至2022,仅需将无约束委托改为约束委托,预生产测试与旧IIS服务器表现一致)。

问题场景

为优化跨环境访问,创建测试站点Site2,复用已配置好SPN的现有应用池标识(默认网站始终处于停止状态):

  • Site1绑定(正常工作):
    • http://IISNetBiosName:CustomPort/home
    • http://HostHeader:80/home(HostHeader为指向该IIS服务器的DNS别名)
    • https://HostHeader:443/home
  • Site2绑定(均无法工作):
    • http://HostHeader:80/Environment/home
    • https://HostHeader:443/Environment/home

Site2根物理目录比Site1高一级,但两者的~/home指向同一物理目录/应用,目的是通过同一HostHeader/绑定/端口访问不同环境,替代Site1使用不同自定义端口的繁琐方式。

问题现象

已确保不同时启动存在重复绑定的两个站点,但Site2无法将客户端用户身份模拟委托至SQL:输入用户凭据后,SQL返回NT AUTHORITY/ANONYMOUS拒绝错误;停止Site2并启动Site1则恢复正常,每次测试均清除客户端缓存。

站点配置一致性

两个站点的IIS配置完全一致:

  • ASP.NET->.NET授权规则:允许domain\domain users(继承配置)
  • IIS->身份验证:匿名身份验证禁用、ASP.NET模拟启用(已验证用户)、表单身份验证禁用、Windows身份验证启用(高级设置:必填/内核检查;身份验证提供者:Negotiate)

已尝试的无效排查操作

  • 客户端执行klist purge清除Kerberos票据
  • 命令行执行iisreset重启IIS
  • 通过GUI重启站点
  • 清除客户端浏览器缓存
  • 通过GUI回收应用池
  • 验证无重复SPN
  • 重新创建IIS SPN
  • 确认相关目录NTFS权限一致
  • 将HostHeader加入Internet选项本地Intranet区域
  • 配置Google Chrome的AuthNegotiateDelegateAllowlist策略

内容的提问来源于stack exchange,提问作者jls206

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:02:13