如何通过Logic App访问已启用身份验证/授权的App Service并解决认证报错
解决方案
方案1:修复OAuth认证逻辑,正常发起合法已认证请求
AADSTS500011错误本质是令牌请求时指定的资源主体未在当前租户中被识别,可按以下步骤排查修复:
- 确认App Service绑定的AD应用配置:进入Azure AD应用注册页,找到和App Service身份验证功能绑定的应用,在「暴露API」页签确认
应用ID URI的配置,默认值为api://<应用客户端ID>,也可手动修改为App Service的根域名https://<你的应用名>.azurewebsites.net - 调整令牌请求参数:
- 调用OAuth v1端点获取令牌时,
resource参数填写App Service的根域名https://<你的应用名>.azurewebsites.net,不要仅使用api://格式的资源标识 - 调用OAuth v2端点获取令牌时,
scope参数填写https://<你的应用名>.azurewebsites.net/.default
- 调用OAuth v1端点获取令牌时,
- 验证令牌匹配规则:拿到令牌后可通过JWT解析工具确认
aud声明值,该值必须存在于App Service身份验证配置的「允许的令牌受众」列表中 - Logic App权限配置:如果使用Logic App的托管标识发起请求,需要在App Service对应AD应用的「API权限」页签,为Logic App的托管标识授予对应应用的访问权限,且完成管理员同意操作
方案2:配置特定接口跳过身份验证(无需开启全局未认证访问)
无需修改业务代码,直接调整App Service的身份验证配置即可实现指定路径免认证:
- 进入App Service控制台的「配置」-「高级编辑」页面,找到身份验证相关配置段,在
globalValidation节点下添加excludedPaths配置,示例如下:
{ "identityProviders": { /*原有配置保持不变*/ }, "globalValidation": { "unauthenticatedClientAction": "RedirectToLoginPage", "excludedPaths": [ "/api/public/*", "/health", "/callback" ] } }
- 保存配置后App Service会自动重启,
excludedPaths中指定的路径无需携带认证令牌即可访问,其余路径仍保持原有身份验证规则
内容的提问来源于stack exchange,提问作者Robin Larsson
相关产品推荐
相关产品推荐

