Проблема при получении токена доступа к каналу с помощью функции JavaScript, запускаемой по таймеру

У меня есть функция, запускаемая по таймеру Azure, для которой необходимо выполнять различные вызовы API Graph, а это значит, что мне нужен токен OAuth2 Bearer, выданный AAD моего арендатора.

Итак, я написал нижеприведенную функцию, основанную на коде, который я ранее написал для выполнения вызовов Ajax, который вызывает AAD для получения нужного токена Bearer.

Я проверил настройки URL, Client ID, Client Secret и Grant Type с помощью Postman, и они вернули мне действительный токен на предъявителя. Однако код выполняет вызов, и ничего не возвращается, просто кажется, что он зависает. При тестовом запуске на портале Azure я получаю

Статус 503 Сервис недоступен.

async function getToken() {
  return new Promise((resolve, reject) => {
    try {
      let https = require("https");

      let url =
        "https://login.microsoftonline.com/<azure_tenancy>.onmicrosoft.com/oauth2/token";

      let options = {
        method: "POST",
        headers: {
          "Content-Type": "application/json; charset=utf-8",
          "Cache-Control": "no-cache"
        }
      };

      let body = {
        grant_type: "client_credentials",
        client_id: "<client_id>",
        client_secret: "client_secret>",
        resource: "https://graph.microsoft.com"
      };

      var req = https
        .request(url, options, res => {
          let data = "";
          res.on("data", chunk => {
            data += chunk;
          });

          res.on("end", () => {
            resolve(JSON.parse(data));
          });
        })
        .on("error", err => {
          throw new Exception(e.message);
        });

      req.write(JSON.stringify(body));
      req.end();
    } catch (e) {
      context.log("error caught");
      reject(e);
    }
  });
}

Почтальон возвращается:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1558542984",
    "not_before": "1558539084",
    "resource": "https://graph.microsoft.com",
    "access_token": "eyJ...e8mw"
}

Так что я знаю, что URL, ID и секрет, который я передаю, верны. Это должно быть что-то еще в коде, но я озадачен тем, что. Есть какие-нибудь подсказки?

0 ответов