Next.js中使用MSAL遇Invalid Grant错误:权限不足(AADB2C90205)
问题描述
在Next.js应用中使用Azure AD B2C和MSAL库实现登录功能时,遇到以下错误:
{ "error": "invalid_grant", "error_description": "AADB2C90205:This application does not have sufficient permissions against this web resource to perform the operation. \r\nCorrelation ID: 425d0c39-3bf7-48be-9b81-8bc5cd5abc02\r\nTimestamp: 2024-09-06 12:41:31Z\r\n" }
相关细节
使用的依赖版本:
@azure/msal-browser: ^3.23.0 @azure/msal-react: ^2.0.13
已执行的配置步骤:
- 在Azure AD B2C中注册应用;
- 配置必要的重定向URI和API权限;
- 使用MSAL React库在Next.js应用中配置MSAL。
已尝试的排查操作:
- 检查API权限并确认已授予管理员同意;
- 验证MSAL配置中的重定向URI和范围与Azure AD B2C中的一致。
疑问
该“权限不足”错误可能由什么原因导致?如何解决?是否需要在Azure AD B2C中进行特定配置才能让MSAL成功完成用户认证?
原因分析与解决方案
可能的原因及对应解决方法
请求的范围未在应用注册中配置
- 若MSAL代码中请求的
scopes未在Azure AD B2C应用注册的权限列表中,会触发权限不足错误。 - 解决:登录Azure AD B2C门户,进入目标应用注册的「API权限」页面,检查是否包含代码中请求的所有范围,缺失则添加并重新授予管理员同意。
- 若MSAL代码中请求的
权限类型与应用类型不匹配
- Next.js单页应用(SPA)只能使用委托权限,无法使用应用权限。若误添加了应用权限,会导致验证失败。
- 解决:删除不适用的应用权限,添加对应的委托权限并完成管理员同意操作。
重定向URI类型配置错误
- SPA类型的应用需将重定向URI设置为「单页应用(SPA)」类型,而非「Web」类型,错误类型会引发权限验证异常。
- 解决:在应用注册的「身份验证」页面,修改重定向URI的类型为「单页应用(SPA)」,确保与MSAL配置中的URI完全一致。
MSAL的
authority参数错误authority必须正确指向Azure AD B2C的用户流端点,格式为https://{你的B2C租户}.b2clogin.com/{你的B2C租户}.onmicrosoft.com/{你的用户流名称},参数错误会导致权限逻辑失效。- 解决:核对MSAL配置中的
authority是否与Azure AD B2C中创建的用户流端点一致,修正后重新测试。
未启用所需令牌类型
- 若应用需要获取ID令牌(用于登录)或访问令牌(用于调用API),需在应用注册的「身份验证」页面勾选对应令牌类型。
- 解决:进入应用注册的「身份验证」设置,在对应应用类型的配置中,勾选所需的ID令牌、访问令牌选项。
Azure AD B2C的特定配置要求
除常规配置外,还需确保:
- 创建并启用了正确的用户流(如注册/登录流),MSAL的
authority必须指向该用户流的端点; - 若使用Microsoft Graph API,需添加针对Azure AD B2C的Graph权限(而非普通Azure AD的权限);
- 若调用自定义API,需先在Azure AD B2C中注册该API,为应用添加对应的委托权限,并确保API的范围名称与代码中请求的一致。
内容的提问来源于stack exchange,提问作者Lohith_gs
相关产品推荐
相关产品推荐

