使用Client Credentials授权Azure Function API时遇AADSTS90083错误求助
问题场景
已在Microsoft Entra ID中注册Azure Function App及对应客户端应用,Authorization Code授权模式可正常工作,但使用Client Credentials模式时触发以下错误:
java.util.concurrent.CompletionException:
com.microsoft.aad.msal4j.MsalInteractionRequiredException:
AADSTS90083: Request is unsupported. Trace ID:
20d89e47-3937-4535-b174-8cc57d31a400 Correlation ID:
c2bc0944-902d-4768-851e-615bcfd6776c Timestamp: 2024-04-09 06:09:57Z
at
com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:89)
at
com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:17)
at
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
... 1 more Caused by:
com.microsoft.aad.msal4j.MsalInteractionRequiredException:
AADSTS90083: Request is unsupported. Trace ID:
20d89e47-3937-4535-b174-8cc57d31a400 Correlation ID:
c2bc0944-902d-4768-851e-615bcfd6776c Timestamp: 2024-04-09 06:09:57Z
at
com.microsoft.aad.msal4j.MsalServiceExceptionFactory.fromHttpResponse(MsalServiceExceptionFactory.java:37)
at
已尝试修改scope、添加app roles,但问题未解决。
排查与解决步骤
1. 确认Azure Function App的应用权限配置
客户端凭证模式属于应用级授权,必须给客户端应用分配应用权限(而非委托权限),且需完成管理员同意:
- 进入Azure Portal → Microsoft Entra ID → 应用注册 → 找到你的客户端应用 → API权限
- 点击“添加权限” → 选择“我的API” → 选中你的Azure Function App注册
- 在“应用权限”标签下勾选所需权限(若已配置app roles,选择对应的角色)
- 点击“授予管理员同意”(必须完成此步骤,应用权限才会生效)
2. 修正Scope参数格式
客户端凭证模式下,scope必须使用应用级格式,不能使用委托权限的scope:
- 正确格式:
{Function App的应用ID URI}/.default或{Function App的Client ID}/.default - 示例:如果Function App的应用ID URI是
api://abc123-xyz-789,则scope应为api://abc123-xyz-789/.default - 注意:不要使用类似
user.read的用户级scope,这类scope仅适用于授权码等需要用户交互的模式
3. 验证App Roles的配置有效性
若使用自定义app roles,需确保角色支持应用身份:
- 进入Azure Function App的应用注册 → 应用角色 → 检查角色的
allowedMemberTypes是否包含Application - 确认客户端应用已被分配该角色:在客户端应用的“应用角色分配”中,检查是否存在对应Function App的角色分配
4. 检查客户端应用的凭据与请求参数
- 确保客户端应用已配置有效的凭据(客户端密钥或证书),请求时需正确传入
client_id和client_secret(或证书相关参数) - 确认请求的完整参数:
POST https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded grant_type=client_credentials &client_id={客户端应用ID} &client_secret={客户端密钥} &scope={正确的应用级scope}
5. 检查Function App的身份验证设置
- 确保Azure Function App的“身份验证”功能中,已启用Microsoft Entra ID作为身份提供者,且配置的受众(Audience)与客户端请求的scope匹配
内容的提问来源于stack exchange,提问作者Purbaja Chakraborty

