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

启用Windows身份验证的GCP IIS服务跨平台访问异常求助

解决方案:兼容Windows与非Windows客户端的IIS Windows身份验证配置

1. 启用IIS的NTLM回退支持

Windows身份验证默认优先Kerberos,但多数非Windows客户端无法正确适配Kerberos的SPN机制,需确保IIS允许回退到NTLM认证:

  • 打开IIS管理器,定位目标站点 → 「身份验证」→ 双击「Windows身份验证」
  • 在右侧操作栏点击「提供程序」,确认Negotiate和NTLM均在列表中(若缺少NTLM,点击「添加」选择NTLM),保持Negotiate排在首位
  • 若需通过配置文件强制生效,可在站点的web.config中添加:
<system.webServer>
  <security>
    <authentication>
      <windowsAuthentication enabled="true">
        <providers>
          <add value="Negotiate"/>
          <add value="NTLM"/>
        </providers>
      </windowsAuthentication>
    </authentication>
  </security>
</system.webServer>

2. 补充IIS所需的SPN配置

之前仅绑定了host类SPN,IIS服务通常需要HTTP类SPN来支持Kerberos认证,执行以下命令添加:

Setspn -F -S 'HTTP/cloudbdna-dev-admin.corp.goog' 'google\csw-dev-bapp-0'

若VM已加入域,需在域控制器中配置约束委派:允许VM的计算机账户委派到自身的HTTP服务(对应LB的FQDN),确保Kerberos票据能正确传递。

3. 非Windows客户端的认证适配方法

针对不同类型的非Windows客户端,提供具体的认证操作:

  • curl命令行:使用--ntlm参数传递域账号密码:
curl --ntlm -u "google\username:password" https://cloudbdna-dev-admin.corp.goog/your-service-path
  • Chrome/Edge(非域环境):在地址栏输入chrome://flags/#negotiate-auth-delegate-by-default,启用该选项后,访问站点时会弹出NTLM认证窗口,输入域账号密码即可
  • Linux Kerberos客户端:
    1. 安装依赖包:sudo apt-get install krb5-user
    2. 修改/etc/krb5.conf,添加域信息:
    [realms]
    CORP.GOOG = {
      kdc = your-domain-controller.corp.goog
      admin_server = your-domain-controller.corp.goog
      default_domain = corp.goog
    }
    [domain_realm]
    .corp.goog = CORP.GOOG
    corp.goog = CORP.GOOG
    
    1. 获取Kerberos票据:kinit username@CORP.GOOG
    2. 访问服务:curl --negotiate -u : https://cloudbdna-dev-admin.corp.goog/your-service-path

4. GCP负载均衡器的配套配置

确保LB能正确传递认证相关信息:

  • 在GCP HTTP(S)负载均衡器的后端服务配置中,启用「保留客户端IP」(可选,便于后续认证日志排查)
  • 确认LB未修改或移除Authorization请求头,保证客户端的认证信息能完整传递到IIS虚拟机

5. 问题排查验证步骤

  • 查看IIS日志(默认路径C:\inetpub\logs\LogFiles),根据401子状态码定位问题:
    • 401.1:账号密码错误
    • 401.2:服务器认证协议配置不兼容
    • 401.3:站点目录ACL权限不足
  • 在Windows客户端用klist命令查看Kerberos票据,确认是否获取到LB FQDN对应的票据
  • 在非Windows客户端抓包,检查Authorization头是否包含NTLM或Negotiate类型的认证信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:42:42