我正在编写一个Azure函数,该函数需要从Microsoft获得的OAuth令牌,而我已经能够成功获取它。我正在尝试使用该令牌访问Microsoft Graph。当我从Microsoft收到令牌后,我的函数在十分钟后超时,并且没有过期,context.log('CALLING MS GRAPH'.)我是Azure的新手,无法弄清楚为什么我不能使用的值调用我的第二个函数Microsoft返回的令牌或具有硬编码值的令牌。任何帮助是极大的赞赏 :)我尝试将令牌值硬编码到函数中,更改超时时间,并添加各种context.log()-但是无法过去接收令牌。我还尝试过将.end()删除到我的POST调用中。const https = require('https');const querystring = require('querystring');getAccessToken = (context, callback) => { const postData = querystring.stringify({ 'client_id': {clientID}, 'scope': 'https://graph.microsoft.com/.default', 'client_secret': {clientSecret}, 'grant_type': 'client_credentials' }); const msTokenOptions = { hostname: 'login.microsoftonline.com', port: 443, path: `/${tenantID}}/oauth2/v2.0/token`, method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': postData.length } }; const oauthReq = https.request(msTokenOptions, (res) => { res.setEncoding('utf8'); res.on('data', (d) => { let accessToken = JSON.parse(d).access_token; // Error happens here. context.log('CALLING MSGRAPH') // I never make it into the functions below, regardless of how they're called. callback(accessToken); accessMsGraph(accessToken) }); }); oauthReq.on('error', (e) => { context.log('ERROR: Problem obtaining MS Token. ' + e); }); oauthReq.write(postData); oauthReq.end(); return;};accessMsGraph = (token) => { // GET request to MS Graph here - I never make it into this function.};module.exports = (context, req) => { getAccessToken(context, (token) => { context.log('Accessing graph') accessMsGraph(context, token) accessMsGraph('123456') });};
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
请检查您租户中设置的访问令牌寿命。
这实际上不是由Microsoft Graph决定的,而是由Azure Active Directory决定的。对于给定的租户,可以使用Azure Active Directory中的可配置令牌生存期(公共预览)来配置生存期。
此功能仍处于预览状态,因此功能可能会在当前版本和一般版本之间发生变化。
此配置是按租户,服务主体或应用程序进行的。如果在应用程序上配置它,则该策略将应用于多租户应用程序,除非被服务主体或租户级别的策略所取代。
Access令牌的最长生存期为24小时(最短为10分钟,默认值为1小时)。
通常,应该调整刷新令牌,而不是调整访问令牌的生存期。它们的使用寿命更长,为14天。
刷新令牌
当客户端获取访问令牌以访问受保护的资源时,客户端还将收到刷新令牌。当前访问令牌到期时,刷新令牌用于获取新的访问/刷新令牌对。刷新令牌绑定到用户和客户端的组合。刷新令牌可以随时撤消,并且每次使用令牌时都会检查令牌的有效性。刷新令牌在用于获取新的访问令牌时不会被撤消-但是,最佳做法是在获取新令牌时安全删除旧令牌。
添加回答
举报
0/150
提交
取消