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

如何验证Angular应用发往后端API的token可通过Azure AD校验?

Azure AD 层面验证 Spring Boot 接收的 MSAL Token 方案

1. 依赖引入与基础配置

首先在Spring Boot项目的pom.xml(Maven)或build.gradle(Gradle)中引入Azure AD官方starter依赖:
azure-spring-boot-starter-active-directory

在项目配置文件(application.yml/application.properties)中添加核心配置项:

  • azure.activedirectory.tenant-id:你的Azure AD B2B租户ID
  • azure.activedirectory.client-id:后端API在Azure AD中注册的应用客户端ID
  • azure.activedirectory.authority:固定为https://login.microsoftonline.com/{替换为你的租户ID}/v2.0,对应Azure AD v2验证端点
  • 如有需要可额外配置azure.activedirectory.app-id-uri,即你在Azure AD中为后端API暴露的标识URI,用于受众校验

2. 安全验证逻辑配置

添加Spring Security配置类,启用Azure AD自动验证能力:

  • 给配置类添加@EnableWebSecurity、@EnableGlobalMethodSecurity(prePostEnabled = true)注解,后者用于开启方法级权限校验
  • Spring Security 5.7及以上版本直接注册SecurityFilterChain Bean,旧版本继承WebSecurityConfigurerAdapter重写配置方法即可,不需要手动实现JWT解析逻辑
  • 框架默认会自动完成所有Azure AD层面的强制校验:
    • 签名校验:调用Azure AD公钥接口验证Token签名合法性,排除篡改风险
    • 有效期校验:自动校验Token的exp(过期时间)、nbf(生效时间)字段是否在合法区间
    • 受众校验:验证Token的aud字段是否匹配配置的后端客户端ID/API URI,确保Token是专门发给当前后端服务的
    • 发行方校验:验证Token的iss字段是否匹配配置的租户对应Azure AD发行地址,避免其他租户的非法Token访问
    • B2B场景下会自动校验用户所属租户的合法性,符合你配置的多租户访问规则

3. 前端请求与额外校验规则

  • Angular端调用接口时必须在请求头中携带Authorization: Bearer {access_token},注意必须使用access token,不能用前端身份认证用的id token,id token不具备API访问权限
  • 若需要校验用户角色、权限等自定义声明,可直接在接口方法上添加@PreAuthorize("hasAuthority('自定义角色值')")注解,框架会自动从Token声明中提取匹配
  • 如需手动获取Token中的用户、租户信息,可直接在接口参数中注入Authentication对象,从Principal属性中提取所有已解析的声明内容

常见异常排查

  • 401未授权优先检查:Token是否过期、是否误用id token、aud字段是否匹配后端客户端ID、iss是否匹配当前租户发行地址
  • B2B外部租户用户访问报错时,检查Azure AD后端应用注册是否开启了多租户支持,配置文件是否添加了对应外部租户的允许规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:24:02