Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как получить доступ к Microsoft Graph из веб-приложения, работающего на Azure App Service.
Вы хотите добавить доступ к Microsoft Graph из веб-приложения и выполнить некоторые действия в качестве пользователя, выполнившего вход. В этом разделе описывается предоставление делегированных разрешений веб-приложению и получение сведений о профиле пользователя, выполнившего вход, из Microsoft Entra ID.
В этом руководстве описано следующее:
- предоставить веб-приложению делегированные разрешения;
- Вызов Microsoft Graph из веб-приложения для вошедшего пользователя.
Если у вас нет учетной записи Azure, создайте учетную запись free перед началом работы.
Предварительные требования
- Веб-приложение, работающее на платформе Azure App Service с включенным модулем аутентификации/авторизации App Service.
Предоставление интерфейсного доступа к вызову Microsoft Graph
После включения проверки подлинности и авторизации в веб-приложении веб-приложение регистрируется в платформе удостоверений Майкрософт и поддерживается приложением Microsoft Entra. На этом шаге вы предоставляете веб-приложению разрешения на доступ к Microsoft Graph для пользователя.
Note
Технически вы предоставляете веб-приложению Microsoft Entra разрешения на доступ к приложению Microsoft Graph от Microsoft Entra для пользователя.
В Microsoft Entra admin center выберите Entra ID.
Выберите регистрация приложений>принадлежащие приложения>Просмотреть все приложения в этом каталоге. Выберите имя веб-приложения, а затем выберите Разрешения API.
Выберите "Добавить разрешение", а затем выберите API Майкрософт, а затем Microsoft Graph.
Щелкните Делегированные разрешения, а затем выберите из списка User.Read. Выберите Добавить разрешения.
Настройка службы приложений для возврата используемых токенов доступа
Теперь веб-приложение имеет необходимые разрешения для доступа к Microsoft Graph в качестве пользователя, вошедшего в систему. В этом разделе вы настраиваете проверку подлинности и авторизацию в службе приложений, чтобы получить пригодный для использования маркер доступа для взаимодействия с Microsoft Graph. Для этого шага необходимо добавить User.Read область для нижестоящей службы (Microsoft Graph): https://graph.microsoft.com/User.Read
Внимание
Если служба App Service не настроена для возврата пригодного маркера доступа, вы получите ошибку CompactToken parsing failed with error code: 80049217 при вызове API Microsoft Graph в вашем коде.
Перейдите к Azure Обозреватель ресурсов и используя дерево ресурсов, найдите веб-приложение. URL-адрес ресурса должен быть похож на https://management.azure.com/subscriptions/subscriptionId/resourceGroups/SecureWebApp/providers/Microsoft.Web/sites/SecureWebApp20200915115914.
Теперь обозреватель ресурсов Azure открыт с веб-приложением, выбранным в дереве ресурсов.
В верхней части страницы выберите Edit, чтобы включить редактирование Azure ресурсов.
В браузере слева перейдите к разделу config>authsettingsV2.
В представлении authsettingsV2 выберите Изменить.
Найдите раздел входа identityProviders> и добавьте следующие параметры loginParameters:
"loginParameters":[ "response_type=code id_token","scope=openid offline_access profile https://graph.microsoft.com/User.Read" ]"identityProviders": { "azureActiveDirectory": { "enabled": true, "login": { "loginParameters":[ "response_type=code id_token", "scope=openid offline_access profile https://graph.microsoft.com/User.Read" ] } } } },Сохраните настройки, выбрав PUT.
Эти настройки могут вступить в силу через несколько минут. Теперь веб-приложение настроено для доступа к Microsoft Graph с соответствующим токеном доступа. Если это не так, Microsoft Graph возвращает ошибку, указывающую, что формат компактного токена неверный.
Вызов Microsoft Graph из Node.js
Теперь веб-приложение имеет необходимые разрешения. Он также добавляет идентификатор клиента Microsoft Graph в параметры входа.
Установка пакетов клиентских библиотек
Установите пакеты @azure/identity и пакеты @microsoft/microsoft-graph-client в проекте с npm.
npm install @microsoft/microsoft-graph-client
Настройка информации для аутентификации
Создайте объект для хранения параметров проверки подлинности:
// partial code in app.js
const appSettings = {
appCredentials: {
clientId: process.env.WEBSITE_AUTH_CLIENT_ID, // Enter the client Id here,
tenantId: "common", // Enter the tenant info here,
clientSecret: process.env.MICROSOFT_PROVIDER_AUTHENTICATION_SECRET // Enter the client secret here,
},
authRoutes: {
redirect: "/.auth/login/aad/callback", // Enter the redirect URI here
error: "/error", // enter the relative path to error handling route
unauthorized: "/unauthorized" // enter the relative path to unauthorized route
},
protectedResources: {
graphAPI: {
endpoint: "https://graph.microsoft.com/v1.0/me", // resource endpoint
scopes: ["User.Read"] // resource scopes
},
},
}
Вызов Microsoft Graph от имени пользователя
В следующем коде показано, как вызвать контроллер Microsoft Graph в качестве приложения и получить некоторые сведения о пользователе.
// controllers/graphController.js
// get the name of the app service instance from environment variables
const appServiceName = process.env.WEBSITE_SITE_NAME;
const graphHelper = require('../utils/graphHelper');
exports.getProfilePage = async(req, res, next) => {
try {
// get user's access token scoped to Microsoft Graph from session
// use token to create Graph client
const graphClient = graphHelper.getAuthenticatedClient(req.session.protectedResources["graphAPI"].accessToken);
// return user's profile
const profile = await graphClient
.api('/me')
.get();
res.render('profile', { isAuthenticated: req.session.isAuthenticated, profile: profile, appServiceName: appServiceName });
} catch (error) {
next(error);
}
}
Предыдущий код использует следующую функцию getAuthenticatedClient для возврата Microsoft Graph клиента.
// utils/graphHelper.js
const graph = require('@microsoft/microsoft-graph-client');
getAuthenticatedClient = (accessToken) => {
// Initialize Graph client
const client = graph.Client.init({
// Use the provided access token to authenticate requests
authProvider: (done) => {
done(null, accessToken);
}
});
return client;
}
Очистка ресурсов
Если вы выполнили все действия, описанные в этом многочастном руководстве, вы создали службу приложений, план размещения для службы приложений и учетную запись хранения в составе группы ресурсов. Вы также создали регистрацию приложения в Microsoft Entra ID. Если вы выбрали внешнюю конфигурацию, возможно, вы создали новый внешний клиент. Если ресурсы и регистрация приложения больше не нужны, удалите их, чтобы за них не взималась плата.
В этом руководстве описано следующее:
- Удалите ресурсы Azure, созданные при выполнении руководства.
Удаление группы ресурсов
На портале Azure в меню портала Azure выберите группы ресурсов.
Выберите группу ресурсов, содержащую вашу службу приложений и план службы приложений.
Щелкните Удалить группу ресурсов. Одновременно с группой ресурсов удаляются все содержащиеся в ней ресурсы.
Это действие может занять несколько минут.
Удаление регистрации приложения
В Microsoft Entra admin center выберите App registrations. Затем выберите созданное вами приложение.
В разделе общих сведений регистрации приложения выберите Удалить.
Удалите внешнего арендатора
Если вы создали новый внешний клиент, его можно удалить.
В Центре администрирования Microsoft Entra перейдите к Entra ID>Обзор>Управление арендаторами.
Выберите клиент, который нужно удалить, и нажмите кнопку "Удалить".
Перед удалением клиента может потребоваться выполнить необходимые действия. Например, может потребоваться удалить все потоки пользователей и регистрации приложений в арендуемой организации.
Если вы готовы удалить арендатора, выберите Удалить.
Следующие шаги
Из этого руководства вы узнали, как:
- предоставить веб-приложению делегированные разрешения;
- Вызов Microsoft Graph из веб-приложения для вошедшего пользователя.