Я хотел бы пройти аутентификацию в Azure, чтобы запросить токен доступа и использовать его для Graph API. Итак, я сделал свою домашнюю работу и начал с этого руководства
https://docs.microsoft.com/en-us/graph/auth-v2-service
Я смог успешно пройти аутентификацию. Но количество кода было огромным. Это мой собственный код, который я написал для аутентификации:
https://pastebin.com/7sYWyhZJ
Если скрипту требуется доступ к токену текущего сеанса, ему просто нужно вызвать функцию getAuthenticationInfo
. Из-за огромного количества кода мне было интересно, является ли мой код избыточным или, возможно, неправильным.
Небольшое исследование привело меня к MSAL.js , который (я думаю) обрабатываетаутентификация для меня. MSAL использует другой подход, чем руководство из ссылки, которую я разместил выше. Я начал с этого простого демонстрационного кода JS (у меня есть только демо-счет, поэтому учетные данные не должны иметь значения)
const msal = require('msal');
async function start() {
const clientId = 'bec52b71-dc94-4577-9f8d-b8536ed0e73d';
const clientSecret = 'OV/NkBIWH7d3G/BGyJQN3vxQA]fT6qK@';
const tenant = '2c1714e1-1030-4da9-af5e-59630d7fe05f';
const scope = 'https://graph.microsoft.com/.default';
const grantType = 'client_credentials';
const msalConfig = {
auth: {
clientId
}
};
const msalInstance = new msal.UserAgentApplication(msalConfig);
const tokenRequest = {
scope,
};
try {
const tokenResponse = await msalInstance.acquireTokenSilent(tokenRequest);
const { accessToken } = tokenResponse;
console.log(accessToken);
} catch (error) {
throw error;
}
}
start();
Мне было интересно, где я должен поместить свои учетные данные для входа в систему здесь. Но когда я запускаю код, я получаю следующую ошибку
ReferenceError: окно не определено
Кажется, что код пытается получить доступ к хранилищу браузера. Но мой код работает в среде Node. Так что, может быть, кто-то так мило скажет мне, как я могу передать свой код из фрагмента, основанного на первой ссылке на подход MSAL?
Насколько я понял, MSAL должен помочь мне, ямне не нужно самому писать код аутентификации, и я могу сократить свой собственный код.
Заранее спасибо!
Обновление
На основена ответ Аллена Вуса Я попробовал ADAL.js, и этот код, кажется, работает нормально
const { AuthenticationContext } = require('adal-node');
const clientId = 'bec52b71-dc94-4577-9f8d-b8536ed0e73d';
const clientSecret = 'OV/NkBIWH7d3G/BGyJQN3vxQA]fT6qK@';
const tenant = '2c1714e1-1030-4da9-af5e-59630d7fe05f';
const authorityHostUrl = 'https://login.windows.net';
const authorityUrl = `${authorityHostUrl}/${tenant}`;
const resource = 'https://graph.microsoft.com';
const context = new AuthenticationContext(authorityUrl);
context.acquireTokenWithClientCredentials(resource, clientId, clientSecret, (error, tokenResponse) => {
if (error) {
throw error;
}
console.log(tokenResponse);
});
Единственное, что я не получил, это то, что resource
. Не стесняйтесь добавлять комментарии, объясняющие это:)