Azure B2C客户端凭据流抛出invalid_grant AADB2C90085错误求助
排查Azure B2C客户端凭据流中的invalid_grant(AADB2C90085)错误
环境与配置信息
- 受保护Web API:
- 暴露API的App ID URI:
https://{my tenant name}.onmicrosoft.com/{protected web api client id}/.default
- 暴露API的App ID URI:
- 守护程序控制台应用:
- API权限配置:
- 目标API:受保护Web API
- 权限:
access_as_application - 权限类型:Application
- 已完成管理员同意:是
- API权限配置:
令牌请求详情
使用OAuth客户端凭据流发起POST请求:
POST https://{my tenant name}.b2clogin.com/{my tenant name}.onmicrosoft.com/{a basic user flow SUSI policy}/oauth2/v2.0/token scope=https://REDACTED.onmicrosoft.com/{protected web api client id}/.default& grant_type=client_credentials& client_id={daemon console app client id}& client_secret={daemon console app client secret}
错误响应
{ "error": "invalid_grant", "error_description": "AADB2C90085: The service has encountered an internal error. Please reauthenticate and try again.\r\nCorrelation ID: REDACTED\r\nTimestamp: REDACTED\r\n" }
排查方向与解决方法
1. 替换请求中的用户流为自定义策略
客户端凭据流不支持用户流(如SUSI策略),必须使用包含ClientCredentialsIssuer技术配置的自定义策略。用户流仅适用于交互式认证场景,非交互式的客户端凭据流需要自定义策略提供支持。
2. 修正Scope参数
确保请求中的scope值与受保护Web API配置的App ID URI完全匹配,替换所有占位符(如{my tenant name}、{protected web api client id})为实际有效值,避免保留REDACTED这类未替换内容。
3. 重新确认管理员同意
即使已标记“已请求管理员同意”,仍需重新操作验证:
- 进入守护程序应用的API权限页面
- 点击「授予管理员同意」按钮,确认租户管理员权限已成功生效
4. 校验客户端凭证有效性
- 确认
client_id和client_secret是守护程序应用的正确值,client_secret未过期或被重置 - 若使用证书替代客户端密钥,检查证书配置是否正确、是否在有效期内
5. 检查租户与应用状态
- 确认Azure B2C租户处于正常状态,无限制措施
- 受保护Web API和守护程序应用均处于启用状态,未被禁用
6. 查看B2C详细日志
在Azure门户的B2C租户中,进入监控 > 日志,通过错误中的Correlation ID搜索详细日志,获取更具体的错误触发原因,比如权限配置疏漏、策略规则错误等。
内容的提问来源于stack exchange,提问作者Exegesis
相关产品推荐
相关产品推荐

