Как получить токен Microsoft Graph API Access из Node Script? - PullRequest
0 голосов
/ 31 мая 2018

Я хотел бы использовать эту библиотеку для взаимодействия с API-интерфейсом для моего AD - https://github.com/microsoftgraph/microsoft-graph-docs/blob/master/concepts/nodejs.md

Однако все существующие библиотеки javascript, которые я обнаружил, чтобы возвращать токены доступа, ожидают возврата URLчтобы быть переданным, а также некоторые другие веб-специфические вещи, заставляющие меня поверить, что это какое-то требование со стороны Microsoft.

Есть ли какой-нибудь хороший способ для аутентификации / получения токена доступа во время запускаСкрипт внутреннего узла (ничего не связанного с Интернетом), чтобы я мог начать звонить на API Microsoft Graph?Заранее спасибо за совет.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

BU0 Ответ не сработал для меня, потому что Microsoft изменила свой способ использования графического API, поэтому я не смог получить все необходимые данные.Вот как я это сделал, используя ответ BU0 и этот учебник :

const request = require("request");

const endpoint = "https://login.microsoftonline.com/[Tenant]/oauth2/v2.0/token";
const requestParams = {
    grant_type: "client_credentials",
    client_id: "[ApplicationID]",
    client_secret: "[Key]",
    scope: "https://graph.microsoft.com/.default"
};

request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
    if (err) {
        console.log("error");
    }
    else {
        console.log("Body=" + body);
        let parsedBody = JSON.parse(body);         
        if (parsedBody.error_description) {
            console.log("Error=" + parsedBody.error_description);
        }
        else {
            console.log("Access Token=" + parsedBody.access_token);
        }
    }
});

function testGraphAPI(accessToken) {
    request.get({
        url:"https://graph.microsoft.com/v1.0/users",
        headers: {
          "Authorization": "Bearer " + accessToken
        }
    }, function(err, response, body) {
        console.log(body);
    });
}
0 голосов
/ 28 августа 2018

Для запуска внутреннего демона без аутентификации пользователя, подключенного к Graph API, вы хотите использовать процесс аутентификации только для приложения.Вот краткое изложение официальных шагов :

  1. Создайте своего клиента Azure AD.Запишите имя yourtenant.onmicrosoft.com и скопируйте это значение вниз.
  2. Зарегистрируйте приложение через глобальный раздел Azure Active Directory blade-сервер App Registrations, а не непосредственно в свойствах арендатора.Скопируйте Application ID;это понадобится нам позже.
  3. Создайте ключ, связанный с регистрацией, и не забудьте скопировать его.После того, как вы щелкнете мышью, вы не сможете вернуть значение ключа, поэтому обязательно скопируйте его.
  4. Также обновите разрешения регистрации до того, что вам нужно, нажмите Save, а затем также нажмите Grant Permissions button.
  5. Сделайте HTTP-запрос к домену login.microsoftonline.com для получения токена доступа.
  6. Используйте токен доступа для выполнения запросов Graph API.

Вот ссылка на пример Microsoft Node.js , а также ссылка на прямую документацию на HTTP-вызов, который нужно сделать для получения токена доступа.А вот супер урезанный пример, который выведет полученный токен доступа.Замените значения [Tenant], [ApplicationID] и [Key]:

const request = require("request");

const endpoint = "https://login.microsoftonline.com/[Tenant].onmicrosoft.com/oauth2/token";
const requestParams = {
    grant_type: "client_credentials",
    client_id: "[ApplicationID]",
    client_secret: "[Key]",
    resource: "https://graph.windows.net"
};

request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
    if (err) {
        console.log("error");
    }
    else {
        console.log("Body=" + body);
        let parsedBody = JSON.parse(body);         
        if (parsedBody.error_description) {
            console.log("Error=" + parsedBody.error_description);
        }
        else {
            console.log("Access Token=" + parsedBody.access_token);
        }
    }
});

Как только у нас будет access_token, мы можем вызвать API Graph.Предполагая, что разрешения приложений были настроены правильно и применены с шага № 4, мы можем начать делать запросы API API:

function testGraphAPI(accessToken) {
    request.get({
        url:"https://graph.windows.net/[Tenant]/users?api-version=1.6",
        headers: {
          "Authorization": accessToken
        }
    }, function(err, response, body) {
        console.log(body);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...