Для запуска внутреннего демона без аутентификации пользователя, подключенного к Graph API, вы хотите использовать процесс аутентификации только для приложения.Вот краткое изложение официальных шагов :
- Создайте своего клиента Azure AD.Запишите имя
yourtenant.onmicrosoft.com
и скопируйте это значение вниз. - Зарегистрируйте приложение через глобальный раздел
Azure Active Directory
blade-сервер App Registrations
, а не непосредственно в свойствах арендатора.Скопируйте Application ID
;это понадобится нам позже. - Создайте ключ, связанный с регистрацией, и не забудьте скопировать его.После того, как вы щелкнете мышью, вы не сможете вернуть значение ключа, поэтому обязательно скопируйте его.
- Также обновите разрешения регистрации до того, что вам нужно, нажмите
Save
, а затем также нажмите Grant Permissions
button. - Сделайте HTTP-запрос к домену
login.microsoftonline.com
для получения токена доступа. - Используйте токен доступа для выполнения запросов 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);
});
}