gpt4 book ai didi

javascript - 从 Azure 取回 token 以访问 Microsoft Graph 后无法调用函数

转载 作者:行者123 更新时间:2023-12-02 23:50:45 28 4
gpt4 key购买 nike

我正在编写一个 Azure 函数,该函数从 Microsoft 获取 OAuth token ,我已经成功获取了该 token 。我正在尝试使用该 token 访问 Microsoft Graph。我收到 Microsoft 的 token 后,我的函数在十分钟后超时,并且没有通过 context.log('CALLING MS GRAPH'.) 我是 Azure 新手,还没有使用过能够弄清楚为什么我无法使用从 Microsoft 返回的 token 值或硬编码值来调用我的第二个函数。

非常感谢任何帮助:)

我尝试将 token 值硬编码到函数中、更改超时并添加各种 context.log() - 但无法接收 token 。我还尝试将 .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')
});
};


最佳答案

请检查您的租户中设置的访问 token 生命周期。

这实际上不是由 Microsoft Graph 决定的,而是由 Azure Active Directory 决定的。对于给定租户,可以使用 Configurable token lifetimes in Azure Active Directory (Public Preview) 配置生命周期。 。

此功能仍处于预览阶段,因此从现在到正式发布,功能可能会发生变化。

此配置针对每个租户、服务主体或应用程序。如果您在应用程序上配置它,则该策略将应用于 Multi-Tenancy 应用程序,除非被服务主体或租户级别的策略取代。

访问 token 的最长生命周期为 24 小时(最短为 10 分钟,默认为 1 小时)。

一般来说,您应该依赖刷新 token ,而不是调整访问 token 的生命周期。它们的使用生命周期更长,为 14 天。

刷新 token

当客户端获取访问 token 来访问 protected 资源时,客户端还会收到刷新 token 。刷新 token 用于在当前访问 token 过期时获取新的访问/刷新 token 对。刷新 token 绑定(bind)到用户和客户端的组合。刷新 token 可以随时撤销,并且每次使用 token 时都会检查 token 的有效性。当用于获取新的访问 token 时,刷新 token 不会被撤销 - 不过,最佳实践是在获取新 token 时安全地删除旧 token 。

关于javascript - 从 Azure 取回 token 以访问 Microsoft Graph 后无法调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55658393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com