我正在使用 Microsoft Azure API 管理服务并希望使用 REST API 服务。在创建我的 SAS 令牌时,这是需要的,否则 API 调用不会授权,我很难形成正确的令牌。Microsoft 的有关 API 管理的 SAS 令牌的网页仅显示了 C# 中的示例。我想知道如何在 Node.js 中形成 SAS 令牌,没有显示。以下是我上周工作的代码,但由于某种未知原因现在不能工作。我得到的错误是:401 Authorization error, token invalid
如果有人可以帮助我制定这个令牌,我将不胜感激。
这是有关此身份验证令牌的 Microsoft 网页:https ://docs.microsoft.com/en-us/rest/api/apimanagement/apimanagementrest/azure-api-management-rest-api-authentication
这是我的代码:
const crypto = require('crypto');
const util = require('util');
const sign = () => {
const id = ${process.env.id}
const key = `${process.env.SASKey}`;
const date = new Date();
const newDate = new Date(date.setTime(date.getTime() + 8 * 86400000));
const expiry = `${newDate.getFullYear()}${
newDate.getMonth() < 10
? '' + newDate.getMonth() + 1
: newDate.getMonth() + 1
}${newDate.getDate()}${newDate.getHours()}${
newDate.getMinutes() < 10
? '0' + newDate.getMinutes()
: newDate.getMinutes()
}`;
const dataToSignString = '%s\n%s';
const dataToSign = util.format(dataToSignString, ${id}, expiry);
const hash = crypto
.createHmac('sha512', key)
.update(dataToSign)
.digest('base64');
const encodedToken = `SharedAccessSignature ${id}&${expiry}&${hash}`;
console.log(encodedToken);
return encodedToken;
};