实际上,adal-node 包不支持代流。为了实现这一点,我们必须进行新的 HTTP 调用并在请求中传递断言。我建议您阅读服务中的传入令牌并对(https://login.microsoftonline.com/b2bc09c8-9386-47b1-8aexxxxxxxxxx/oauth2/token)端点进行新的 http 调用,并带有断言以获取令牌MS 图形 API。
下面是使用邮递员代表流程获取令牌的屏幕截图。
下面是使用 node.js 中的代表流获取访问令牌的代码
var qs = 要求(“查询字符串”);
var http = 要求(“https”);
var options = {“方法”:“POST”、“主机名”:[“登录”、“microsoftonline”、“com”]、“路径”:[“b2bc09c8-9386-47xxxxxxxx”、“oauth2”、“令牌” ], "headers": { "Content-Type": "application/x-www-form-urlencoded", "cache-control": "no-cache", "Postman-Token": "739540c9-1e3d-4d74- bxxxxxx" } };
var req = http.request(options, function (res) { var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(qs.stringify({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', client_id: 'd1538209-a56f-4301-863dxxxxxxxxxxxxx', 资源: ' https://graph. microsoft.com/',client_secret:'NITLQThsHDlPb0FR+8oXxxxxxxxxxxxxxxxxxxx ',范围:'openid',断言:'来自本机应用程序的传入访问令牌',request_token_use:'on_behalf_of',未定义:未定义}));req.end();
您可以提取访问令牌并将其用于承载请求中的资源。我希望这能解决你的问题。