【问题标题】:Azure ADAL - How to get refresh token / how to refresh access token for nodejs backend server to server connection?Azure ADAL - 如何获取刷新令牌/如何刷新 nodejs 后端服务器到服务器连接的访问​​令牌?
【发布时间】:2019-05-10 10:05:46
【问题描述】:

我正在为我的 Node JS 后端使用 adal-node 模块将文件写入 Azure 存储。身份验证工作正常,但我获得的访问令牌仅有效 1 小时。到目前为止,我无论如何都找不到刷新我的访问令牌。有人可以建议吗?

我已尝试获取刷新令牌。但是我在下面使用的身份验证功能不会发回刷新令牌。一段时间后,我也尝试使用相同的身份验证函数创建一个新令牌,但事实证明该令牌始终相同。

这是我用来获取访问令牌的代码。

var AuthenticationContext = require('adal-node').AuthenticationContext;

var authorityHostUrl = 'https://login.windows.net';
var tenant = 'myTenant.onmicrosoft.com'; // AAD Tenant name.
var authorityUrl = authorityHostUrl + '/' + tenant;
var applicationId = 'yourApplicationIdHere'; // Application Id of app registered under AAD.
var clientSecret = 'yourAADIssuedClientSecretHere'; // Secret generated for app. Read this environment variable.
var resource = '00000002-0000-0000-c000-000000000000'; // URI that identifies the resource for which the token is valid.

var context = new AuthenticationContext(authorityUrl);

context.acquireTokenWithClientCredentials(resource, applicationId, clientSecret, function(err, tokenResponse) {
  if (err) {
    console.log('well that didn\'t work: ' + err.stack);
  } else {
    console.log(tokenResponse);
  }
});

需要一些方法来刷新我的访问令牌,这样我的长期运行的工作就不会停止。

【问题讨论】:

    标签: azure azure-active-directory adal adal.js


    【解决方案1】:

    只需获取一个新的访问令牌。

    在客户端凭据流中,不返回刷新令牌。 (参见 OAuth 2.0 规范的 Section 4.4.3。)

    【讨论】:

    • 我试过了,但acquireTokenWithClientCredentials 总是在它过期之前给我相同的访问令牌。我可以使用其他任何 API 来获取新的访问令牌吗?
    • 只要它仍然有效,图书馆就会给你相同的令牌(因为没有必要得到一个新的)。如果它即将到期,那么它将获得一个新的。
    猜你喜欢
    • 2022-11-09
    • 2018-10-17
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2019-07-01
    • 2016-09-28
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多