NodeJS接入微软登录报AADSTS90014缺少'request'字段如何处理?
AADSTS90014 报错解决方案
错误本质
该报错是微软身份平台校验登录请求时检测到必填参数缺失导致的,不属于权限不足类错误,优先通过调整代码修复,无需第一时间联系管理员。
request字段补充位置
你提到的request实际指完整的登录请求结构体,根据你使用的授权码流(有微软登录弹窗的场景,NodeJS端常用@azure/msal-node库),需要在两个位置补全配置:
- 发起登录跳转阶段:调用登录方法时必须传入完整的登录请求对象,必填参数包含
scopes、redirectUri,示例如下:
const msal = require('@azure/msal-node'); // 初始化MSAL实例配置 const msalConfig = { auth: { clientId: "你的ClientID", authority: "https://login.microsoftonline.com/你的TenantID", redirectUri: "你在Azure门户注册应用时填写的重定向URI,必须完全一致" } }; const pca = new msal.PublicClientApplication(msalConfig); // 登录请求对象,就是报错提示中缺失的request结构体核心部分 const loginRequest = { scopes: ["User.Read"], // 必填,不可为空数组,至少指定一个你需要的权限scope redirectUri: msalConfig.auth.redirectUri }; // 发起登录时必须传入该request对象 pca.loginRedirect(loginRequest);
- 回调阶段换取访问令牌:拿到微软返回的授权码后,调用换令牌接口时也需要传入完整的令牌请求对象,必填参数包含
code、scopes、redirectUri,示例如下:
const tokenRequest = { code: "微软回调返回的授权码", scopes: ["User.Read"], // 和登录请求的scopes保持一致 redirectUri: msalConfig.auth.redirectUri }; // 换令牌时传入该request对象 const tokenResponse = await pca.acquireTokenByCode(tokenRequest);
何时需要联系管理员
调整完上述代码配置后如果仍报错,再联系管理员核对以下信息:
- 你使用的ClientID对应的应用注册是否已被启用
- 应用注册的登录受众配置是否包含你当前使用的账号所属的组织范围
- 如果你用的是无弹窗的ROPC(资源所有者密码凭据)流,需要确认管理员已开启该流的使用权限
内容的提问来源于stack exchange,提问作者JerryBurnard
相关产品推荐
相关产品推荐

