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

如何在Azure AD中为Web应用配置Kerberos身份验证的单点登录?

配置Azure AD Web应用的Kerberos身份验证指南

我明白你在配置Kerberos集成Windows身份验证时遇到了困惑,毕竟这比基于密码的SSO要涉及更多环境配置细节。下面我会一步步带你梳理关键配置步骤,帮你搞定这个问题:

前提条件

  • 你的Web应用必须部署在加入域的服务器上(本地AD或Azure AD DS均可),Kerberos依赖域环境的KDC(密钥分发中心)才能正常工作。
  • 服务器已安装Web服务器角色(IIS),并启用了Windows身份验证功能。
  • 你拥有Azure AD的全局管理员或应用管理员权限,且已在Azure AD中完成Web应用的基础注册。

核心配置步骤

1. 为Web服务注册服务主体名称(SPN)

Kerberos需要SPN来关联服务账户与应用服务。以域管理员身份打开命令提示符,执行以下命令:

setspn -S HTTP/your-app-domain.com DOMAIN\your-service-account

注意:your-app-domain.com是Web应用的公网/内网域名;如果IIS使用默认的ApplicationPoolIdentity运行,服务账户需替换为DOMAIN\computer-name$(计算机账户)。

2. 配置IIS的Windows身份验证

  • 打开IIS管理器,定位到你的Web应用站点。
  • 进入身份验证功能,禁用匿名身份验证,启用Windows身份验证。
  • 双击Windows身份验证,点击提供程序,确保Negotiate排在NTLM之前(让系统优先使用Kerberos)。

3. 配置Azure AD应用注册

  • 登录Azure门户,找到你的应用注册,进入对应的企业应用程序条目。
  • 转到单点登录,选择**集成Windows身份验证(IWA)**选项。
  • 在「内部应用程序SAML URL」中填写Web应用的内部访问URL(例如https://internal-app-domain.com/)。
  • 配置Kerberos约束委派:在应用注册的「服务主体名称」中添加之前创建的SPN;或者在AD中为服务账户配置约束委派,允许其委派给该SPN。

4. 配置Web应用代码(以.NET为例)

如果是ASP.NET应用,确保web.config中启用Windows身份验证:

<system.web>
  <authentication mode="Windows" />
  <authorization>
    <deny users="?" /> <!-- 拒绝匿名访问 -->
  </authorization>
</system.web>

同时,使用Microsoft.Identity.Web库处理Azure AD身份验证:

services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
        .AddNegotiate()
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

常见问题排查

  • Kerberos回退到NTLM:检查SPN是否正确注册、服务账户是否有读取SPN的权限,以及客户端与服务器是否在同一域或信任域内。
  • Azure AD身份验证失败:确认应用注册的回复URL与Web应用实际URL匹配,Kerberos约束委派配置无误。
  • 浏览器兼容性问题:IE/Edge默认支持Kerberos;Chrome需在chrome://settings/privacy中添加应用域名到「允许使用集成身份验证的站点」列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:45:46