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

Angular调用IIS托管.NET Core API时Windows身份验证失败求助

问题:Angular调用Windows身份验证的.NET Core API无法传递AD身份

已将Angular部署到本地IIS,配置为仅接受Windows身份验证用户,加载首页时浏览器会要求输入凭证。在Angular组件中执行HTTP DELETE操作调用IIS托管的.NET Core REST API时,API端无法识别调用者的AD身份,返回“无法识别身份”错误。

尝试的调用方式

1. 使用Angular HttpClient

constructor(private http: HttpClient) {}

onClick() {
  // 准备参数,构造HttpParams等...
  this.http.delete<ApiHttpRawResponse>(finalUrl, 
    { headers: new HttpHeaders({ 'Content-Type': 'application/json' }), 
      responseType: 'json', 
      params: parms, 
      withCredentials: true 
   } )
}

2. 使用fetch API

fetch(finalUrl, {
  method: 'DELETE',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Negotiate'
  }
})

API端调试情况

.NET Core API中通过IHttpContextAccessor获取调用者身份时,identityName为null:

public WebLocatingService(IHttpContextAccessor httpContextAccessor)
{
    var ctx = httpContextAccessor.HttpContext;
    var identityName = ctx?.User?.Identity?.Name;
    // 此处identityName为null
}

Angular项目的IIS web.config配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

附加信息

  • IIS启用匿名身份验证可解决CORS预检问题,但JS端无法发送身份数据
  • IIS端禁用匿名身份验证+安装CORS模块是可能的解决方向(不适用于IIS Express)
  • 当Angular由ng server托管时,设置withCredentials: true的HttpClient可正常调用API
  • 部分场景下fetch在此类Windows身份验证场景中表现异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:22:24