Power Automate自定义连接器调用.NET 5 API报令牌无效、受众错误
解决方案
返回的www-authenticate响应头已明确说明错误根因:请求携带的JWT令牌的受众(aud)值api://37008370-*********不在你的API配置的有效受众列表中,可按以下步骤排查解决:
- 第一步:核对自定义连接器的资源标识配置
打开自定义连接器的身份验证配置页,确认「资源」字段填写的内容,和你的API对应的Azure AD应用注册中「公开API」标签下的「应用ID URI」完全一致。如果你的Blazor应用调用API时使用纯ClientID作为资源,你可以直接将连接器的资源字段改为37008370-*********(去掉api://前缀)测试是否能正常通行。 - 第二步:调整.NET Core API的JWT验证配置
为了兼容不同客户端的调用习惯,建议你在API的JWT验证配置中,同时将纯ClientID和带api://前缀的应用ID URI都加入有效受众列表,参考配置如下:builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = "https://login.microsoftonline.com/<你的租户ID>"; options.TokenValidationParameters = new TokenValidationParameters { // 同时添加两种格式的受众 ValidAudiences = new List<string> { "37008370-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "api://37008370-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, ValidateIssuer = true }; }); - 第三步:确认令牌内容定位问题
你可以将自定义连接器请求返回的JWT令牌复制到本地JWT解析工具解析,查看aud声明的实际值,和API配置的有效受众做对比,即可快速定位不匹配的具体项。 - 第四步:验证权限配置
确认你自定义连接器使用的Azure AD应用,已经被授予你API公开的对应权限,且租户管理员已经完成权限同意。
内容的提问来源于stack exchange,提问作者stuart-bailey-uk
相关产品推荐
相关产品推荐

