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

基于Angular+DotNet6的Azure AD前后端认证交互方案咨询

Azure AD认证的.NET 6后端配置方案(适配Angular前端)

核心结论

你的场景是前端单页应用(Angular)已完成登录并获取Token,后端为纯API服务,因此应该选择JWT Bearer认证方式,而非OpenIdConnect(后者适用于后端需处理登录跳转的MVC/ Razor Pages应用)。

正确配置步骤

1. 后端依赖与基础配置

使用Microsoft.Identity.Web库简化Azure AD的JWT验证,无需手动编写复杂的Token校验逻辑。

appsettings.json 配置

确保包含以下Azure AD参数:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的Azure AD租户ID",
    "ClientId": "后端API的Azure AD应用注册ClientID",
    "Audience": "api://你的后端API应用注册ClientID"
  }
}
  • Audience必须与前端获取Token时指定的API Scope的受众一致,否则Token会因受众不匹配被拒绝。

Program.cs 服务配置

var builder = WebApplication.CreateBuilder(args);

// 添加控制器服务
builder.Services.AddControllers();

// 配置Azure AD JWT认证
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));

// 启用授权策略
builder.Services.AddAuthorization();

var app = builder.Build();

// 中间件顺序必须正确:先认证,后授权
app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();

2. 前端Token获取与请求头设置

确保前端获取Token时指定后端API的正确Scope,示例:

const tokenRequest = {
  scopes: ["api://你的后端API应用注册ClientID/access_as_user"]
};

this.msalService.acquireTokenSilent(tokenRequest).then(response => {
  // 请求后端时,在Header中添加Authorization: Bearer {accessToken}
  const headers = new HttpHeaders().set('Authorization', `Bearer ${response.accessToken}`);
  // 发起API请求
});

3. 权限响应问题排查

后端返回无权限(401/403)的常见原因:

  • Token格式错误:检查请求头是否为Bearer {token},注意Bearer后有空格。
  • 受众不匹配:前端请求的Scope对应的受众(aud声明)与后端Audience配置不一致。
  • 权限未分配:在Azure AD中,需给前端应用注册分配后端API的访问权限(API权限 > 添加权限 > 选择后端API > 勾选access_as_user等权限并授予管理员同意)。
  • 中间件顺序错误:UseAuthentication()必须在UseAuthorization()之前,且都在UseRouting()之后、UseEndpoints()之前。
  • 租户ID/ClientID配置错误:确保后端配置的TenantId和ClientID与Azure AD应用注册完全一致。

关键区别说明

  • OpenIdConnect方案:适用于后端需要主动引导用户登录跳转的场景(如传统MVC应用),你的前端已独立完成登录,无需使用此方案。
  • JWT Bearer方案:专为API服务设计,直接验证前端传来的Bearer Token,符合前后端分离的架构模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:59:52