В этом сценарии вы можете попытаться реализовать ADAL для js в своем клиенте JS. Используя **adal**
, вы получите токен аутентификации, и при вызове вашего Web Api он добавит заголовок аутентификации в HTTP-запросах.
Е.Г.
Предположим, мы хотим вызвать API-интерфейс Microsoft Graph из нашего JS-клиента. Мы разрабатываем сценарий node.js, который использует запрос для вызова API-интерфейса Microsoft Graph для групп для создания новой группы безопасности.
Следующий код показывает, как API используется из этого скрипта. Обратите внимание, что токен и имя передаются параметром. Кроме того, эта функция возвращает Обещание, которое успешно разрешено, когда группа создана правильно, и отклонено, если это не так.
var request = require('request');
function createGroup(token, name) {
return new Promise((resolve, reject) => {
const options = {
method: 'POST',
url: 'https://graph.microsoft.com/v1.0/groups/',
headers: {
'Authorization': 'Bearer ' + token,
'content-type': 'application/json'
},
body: JSON.stringify({
"displayName": name,
"mailEnabled": false,
"securityEnabled": true
})
};
request(options, (error, response, body) => {
const result = JSON.parse(body);
if (!error && response.statusCode == 204) {
resolve(result.value);
} else {
reject(result);
}
});
});
}
Чтобы вызвать Microsoft Graph API, нам нужно было пройти аутентификацию, и поэтому в предыдущем разделе у нас был токен в качестве параметра функции, которая использовалась для выполнения запроса.
мы должны добавить следующий код для генерации токена. Обратите внимание, что мы используем пакет adal npm, чтобы сделать это проще, вызывая метод acquTokenWithClientCredentials объекта AuthenticationContext. Кроме того, у нас есть некоторые константы, которые необходимо обновить с помощью идентификатора клиента и секрета, полученных ранее, а также имени арендатора.
var adal = require('adal-node');
const TENANT = "{tenant-name-here}.onmicrosoft.com";
const CLIENT_ID = "{Application-id-here}";
const CLIENT_SECRET = "{Application-key-here}";
function getToken() {
return new Promise((resolve, reject) => {
const authContext = new adal.AuthenticationContext(`https://login.microsoftonline.com/${TENANT}`);
authContext.acquireTokenWithClientCredentials(GRAPH_URL, CLIENT_ID, CLIENT_SECRET, (err, tokenRes) => {
if (err) { reject(err); }
resolve(tokenRes.accessToken);
});
});
Надеюсь, это поможет.