为何未配置客户端ID的Angular应用仍可访问Azure Node.js API?
问题原因分析
以下是几种可能导致该现象的核心原因:
- 公共客户端流默认开启:若你的Angular应用使用隐式授权流或授权码流,且API对应的Azure AD应用注册中「认证」>「高级设置」里的「允许公共客户端流」设为「是」,Azure AD会默认允许公共客户端请求令牌,无需将客户端ID添加到「公开API」的授权列表。只要令牌受众正确指向API,就能完成授权。
- 令牌验证逻辑未校验授权方:检查获取到的令牌的
aud(受众)字段,若该值匹配API的应用ID URI或客户端ID,且API的验证逻辑仅校验令牌签名与受众,未验证azp(授权方)字段是否在允许列表内,那么即便未添加客户端ID,令牌仍会被API认可。 - 同租户内默认权限允许访问:若Angular应用与Node.js API在同一Azure AD租户下,且API配置了允许租户内所有应用访问的权限(内置权限或自定义权限的默认范围),租户内的客户端无需显式授权即可获取令牌访问API。
- 缓存令牌未过期:若之前曾添加过客户端ID并获取过有效令牌,浏览器或应用可能缓存了该令牌。即使后续移除了客户端ID,只要缓存令牌未过期,仍可继续使用。可通过清除缓存或强制刷新令牌验证此情况。
内容的提问来源于stack exchange,提问作者the programmer
相关产品推荐
相关产品推荐

