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

使用Graph API创建的Azure B2C应用获取令牌时出现invalid_grant错误

Azure B2C Client Credentials流:Graph API创建应用返回invalid_grant错误

问题现象

通过Azure门户创建的应用,配置密钥和API权限后可正常调用B2C令牌端点获取访问令牌;但通过Graph API创建的同配置应用(清单、服务主体一致,已授予管理员同意)调用时返回如下错误:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90085: The service has encountered an internal error. Please reauthenticate and try again.\r\nCorrelation ID: a73a0250-9ee7-4cde-9754-715460bc5fe6\r\nTimestamp: 2023-07-18 20:10:01Z\r\n"
}

Graph API创建应用的请求仅指定displayName:

POST /v1.0/applications HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer {token from graph API application}
Content-Type: application/json

{
    "displayName": "test2"
}

无论通过Graph API还是门户添加密钥,调用以下令牌端点均报错,仅替换门户应用的client_id和密钥则正常:

POST /{tenant}.onmicrosoft.com/{custom policy}/oauth2/v2.0/token?client_id={client_id}&grant_type=client_credentials&scope=https://{tenant}.onmicrosoft.com/{application id URI slug}/.default&client_secret={client_secret} HTTP/1.1
Host: devcloud9fx.b2clogin.com

解决方案

1. 修正应用的signInAudience属性

Graph API创建应用时,默认signInAudience为AzureADMyOrg,该值仅允许Azure AD租户内的身份验证,不支持B2C场景。需将其修改为B2C兼容的取值:
使用Graph API更新应用:

PATCH /v1.0/applications/{app-id} HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer {token}
Content-Type: application/json

{
    "signInAudience": "AzureADandPersonalMicrosoftAccount"
}

若仅针对B2C租户,也可设置为AzureADB2C(需确认租户支持该取值)。

2. 启用隐式流相关配置

部分B2C后端逻辑会检查应用的隐式流配置,即使Client Credentials流不直接依赖,仍需启用以下属性:

PATCH /v1.0/applications/{app-id} HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer {token}
Content-Type: application/json

{
    "oauth2AllowIdTokenImplicitFlow": true,
    "oauth2AllowImplicitFlow": true
}

3. 重新触发API权限的管理员同意

虽然已通过门户授予同意,但Graph API创建的服务主体可能需要重新确认权限状态:

  • 进入Azure门户的B2C应用注册页面,找到Graph创建的应用
  • 导航至「API权限」页面,点击「授予管理员同意」按钮,重新完成授权

4. 验证自定义策略的Client Credentials支持

确保使用的自定义策略已配置Client Credentials流支持:

  • 策略中需包含<TechnicalProfile Id="ClientCredentialsGrant">相关配置
  • 检查<RelyingParty>部分是否允许client_credentials的grant_type

验证

修改应用属性后,等待5-10分钟让配置生效,再重新调用令牌端点测试。

内容的提问来源于stack exchange,提问作者p-bednar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:52:42