Основы аутентификации и авторизации

Microsoft Graph — это защищенный веб-API для доступа к данным в облачных службах Майкрософт, таких как Microsoft Entra ID и Microsoft 365. Он защищен платформа удостоверений Майкрософт, который использует маркеры доступа OAuth для проверки того, разрешено ли приложению вызывать Microsoft Graph.

В этой статье представлен обзор платформы удостоверений Майкрософт, маркеров доступа и того, как ваше приложение может получить маркеры доступа. Дополнительные сведения о платформе удостоверений Майкрософт см. в статье Что такое платформа удостоверений Майкрософт?. Если вы знаете, как интегрировать приложение с платформа удостоверений Майкрософт для получения маркеров, ознакомьтесь с примерами кода платформа удостоверений Майкрософт для получения сведений и примеров, относящихся к Microsoft Graph.

Регистрация приложения

Прежде чем приложение сможет получить маркер доступа из платформа удостоверений Майкрософт, его необходимо зарегистрировать в Центр администрирования Microsoft Entra. При регистрации приложение интегрируется с платформой удостоверений Майкрософт, а также задаются сведения, используемые для получения маркеров, включая:

  • Идентификатор приложения. Уникальный идентификатор, назначенный платформой удостоверений Майкрософт.
  • URI/URL-адрес перенаправления: одна или несколько конечных точек, в которых приложение получает ответы от платформа удостоверений Майкрософт. (Для собственных и мобильных приложений URI назначается платформа удостоверений Майкрософт.)
  • Секрет клиента: пароль, который приложение использует для проверки подлинности с помощью платформа удостоверений Майкрософт. При необходимости можно использовать сертификат или учетные данные федеративного удостоверения. Это свойство не требуется для общедоступных клиентов, таких как собственные, мобильные и одностраничные приложения.

Дополнительные сведения см. в разделе Регистрация приложения с помощью платформа удостоверений Майкрософт.

Сценарии доступа

Метод, который приложение использует для проверки подлинности с помощью платформа удостоверений Майкрософт, зависит от того, как приложение будет получать доступ к данным. Этот доступ может осуществляться одним из двух способов, как показано на следующем рисунке.

  • Делегированный доступ— приложение, действующее от имени пользователя, выполнившего вход.
  • Доступ только для приложений— приложение, действующее с собственным удостоверением.

Иллюстрация сценариев делегированного доступа и доступа только для приложений в платформа удостоверений Майкрософт.

Делегированный доступ (доступ от имени пользователя)

В этом сценарии доступа пользователь вошел в клиентское приложение, и клиентское приложение вызывает Microsoft Graph от имени пользователя. Клиент и пользователь должны быть авторизованы для выполнения запроса.

Для делегированного доступа требуются делегированные разрешения, также называемые областями. Области — это разрешения, предоставляемые данным ресурсом, и представляют операции, которые приложение может выполнять от имени пользователя.

Так как и приложение, и пользователь должны быть авторизованы для выполнения запроса, ресурс предоставляет клиентскому приложению делегированные разрешения, чтобы клиентское приложение пользовалось данными от имени указанного пользователя. Для пользователя действия, которые он может выполнять с ресурсом, зависят от разрешений, которые у него есть для доступа к ресурсу. Например, пользователь может быть владельцем ресурса или ему может быть назначена определенная роль через систему управления доступом на основе ролей (RBAC), например Microsoft Entra RBAC.

Примечание.

Конечные точки и API с псевдонимом /me работают только с вошедшего пользователя и поэтому вызываются в сценариях делегированного доступа.

Доступ только для приложений (доступ без пользователя)

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

Приложения получают права на вызов Microsoft Graph с собственным удостоверением одним из следующих способов:

  • Когда приложению назначены разрешения приложения, также называемые ролями приложения
  • Когда приложению назначено право владения ресурсом, которым оно намерено управлять

Примечание.

Приложение также может получить привилегии с помощью разрешений, предоставленных системой управления доступом на основе ролей, например Microsoft Entra RBAC.

Разрешения Microsoft Graph

Microsoft Graph предоставляет детализированные разрешения, которые управляют доступом приложений к ресурсам Microsoft Graph, таким как пользователи, группы и почта. Как разработчик, вы решаете, какие разрешения Microsoft Graph запрашивать для приложения, на основе сценария доступа и операций, которые вы хотите выполнить.

Microsoft Graph предоставляет два типа разрешений для поддерживаемых сценариев доступа:

  • Делегированные разрешения. Также называемые областями, позволяют приложению действовать от имени вошедшего пользователя.
  • Разрешения приложений. Также называемые ролями приложения, позволяют приложению получать доступ к данным самостоятельно, без вошедшего пользователя.

Когда пользователь входит в приложение, приложение должно указать разрешения, которые необходимо включить в маркер доступа. Эти разрешения:

  • Может быть предварительно авторизовано для приложения администратором.
  • Может быть предоставлено согласие пользователя напрямую.
  • Если это не разрешено, могут потребоваться права администратора для предоставления согласия. Например, для разрешений с большим потенциальным воздействием на безопасность.

Дополнительные сведения о разрешениях и согласии см. в статье Общие сведения о разрешениях и согласии.

Примечание.

Рекомендуется запрашивать разрешения с минимальными правами, необходимыми вашему приложению для доступа к данным и правильной работы. Запрос разрешений с правами, превышающими необходимые, отрицательно сказывается на безопасности, и в результате пользователи могут не предоставлять согласие, что повлияет на использование вашего приложения.

Дополнительные сведения о разрешениях Microsoft Graph и их использовании см. в статье Обзор разрешений Microsoft Graph.

Маркеры доступа

Приложение отправляет запрос на проверку подлинности платформа удостоверений Майкрософт, чтобы получить маркеры доступа, которые используются для вызова API, например Microsoft Graph. Маркеры доступа, которые платформа удостоверений Майкрософт проблемы, содержат утверждения, которые содержат сведения о приложении, а в сценариях делегированного доступа — о пользователе. Веб-API, защищенные платформа удостоверений Майкрософт, например Microsoft Graph, используют утверждения для проверки вызывающего объекта и обеспечения того, что вызывающий объект имеет необходимые права для выполнения запрашиваемой операции. Вызывавшему следует рассматривать маркеры доступа как непрозрачные строки, так как содержимое маркера предназначено только для API. При вызове Microsoft Graph всегда защищайте маркеры доступа, передавая их по безопасному каналу, который использует протокол TLS.

Ниже приведен пример маркера доступа платформы удостоверений Майкрософт:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt

Маркеры доступа — это своего рода маркер безопасности, который предоставляет платформа удостоверений Майкрософт. Они кратковременные, но с переменным временем существования по умолчанию.

Чтобы вызвать Microsoft Graph, приложение выполняет запрос авторизации, вложив маркер доступа в качестве маркера носителя в заголовок Authorization в HTTP-запросе. Например, следующий вызов возвращает данные профиля вошедшего пользователя (для удобства маркер доступа сокращен).

GET https://graph.microsoft.com/v1.0/me/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==

Получение токена доступа

Мы рекомендуем использовать библиотеки проверки подлинности для управления взаимодействием маркеров с платформа удостоверений Майкрософт. Библиотеки проверки подлинности абстрагируют многие сведения о протоколе, такие как проверка, обработка файлов cookie, кэширование маркеров и поддержание безопасных подключений, что позволяет сосредоточиться на разработке функциональных возможностей приложения. Корпорация Майкрософт публикует клиентские библиотеки с открытым исходным кодом и серверное ПО промежуточного слоя.

Для конечной точки платформы удостоверений Майкрософт:

  • Клиентские библиотеки Microsoft Authentication Library (MSAL) доступны для различных платформ, включая .NET, JavaScript, Android и iOS. Все платформы поддерживаются в рабочей версии, и в случае внесения критических изменений корпорация Майкрософт гарантирует путь к обновлению.
  • Серверное ПО промежуточного слоя майкрософт доступно для .NET Core и ASP.NET (OWIN OpenID Connect и OAuth), а также для Node.js (платформа удостоверений Майкрософт Passport.js).
  • Платформа удостоверений Майкрософт также совместим со многими сторонними библиотеками проверки подлинности.

Полный список клиентских библиотек Майкрософт, по промежуточного слоя сервера Майкрософт и совместимых сторонних библиотек см. в документации по платформа удостоверений Майкрософт.

Для получения маркера доступа не нужно использовать библиотеку проверки подлинности. Сведения о непосредственном использовании конечных точек платформа удостоверений Майкрософт без помощи библиотеки проверки подлинности см. в следующих статьях: