有只小跳蛙
2021-04-17 13:15:23
我正在編寫一個Azure函數(shù),該函數(shù)需要從Microsoft獲得的OAuth令牌,而我已經(jīng)能夠成功獲取它。我正在嘗試使用該令牌訪問Microsoft Graph。當我從Microsoft收到令牌后,我的函數(shù)在十分鐘后超時,并且沒有過期,context.log('CALLING MS GRAPH'.)我是Azure的新手,無法弄清楚為什么我不能使用的值調(diào)用我的第二個函數(shù)Microsoft返回的令牌或具有硬編碼值的令牌。任何幫助是極大的贊賞 :)我嘗試將令牌值硬編碼到函數(shù)中,更改超時時間,并添加各種context.log()-但是無法過去接收令牌。我還嘗試過將.end()刪除到我的POST調(diào)用中。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條經(jīng)驗 獲得超9個贊
請檢查您租戶中設置的訪問令牌壽命。
這實際上不是由Microsoft Graph決定的,而是由Azure Active Directory決定的。對于給定的租戶,可以使用Azure Active Directory中的可配置令牌生存期(公共預覽)來配置生存期。
此功能仍處于預覽狀態(tài),因此功能可能會在當前版本和一般版本之間發(fā)生變化。
此配置是按租戶,服務主體或應用程序進行的。如果在應用程序上配置它,則該策略將應用于多租戶應用程序,除非被服務主體或租戶級別的策略所取代。
Access令牌的最長生存期為24小時(最短為10分鐘,默認值為1小時)。
通常,應該調(diào)整刷新令牌,而不是調(diào)整訪問令牌的生存期。它們的使用壽命更長,為14天。
刷新令牌
當客戶端獲取訪問令牌以訪問受保護的資源時,客戶端還將收到刷新令牌。當前訪問令牌到期時,刷新令牌用于獲取新的訪問/刷新令牌對。刷新令牌綁定到用戶和客戶端的組合。刷新令牌可以隨時撤消,并且每次使用令牌時都會檢查令牌的有效性。刷新令牌在用于獲取新的訪問令牌時不會被撤消-但是,最佳做法是在獲取新令牌時安全刪除舊令牌。
添加回答
舉報
0/150
提交
取消