Поделиться через


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

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

В этой статье приводятся общие сведения о требованиях к приложению для доступа к данным через любые API Graph Майкрософт. Если вы уже знаете, как работает проверка подлинности и авторизация, изучите платформа удостоверений Майкрософт примеры кода или учебники по Microsoft Graph для приложений, созданных с помощью различных пакетов SDK Microsoft Graph и вызывающих API Microsoft Graph.

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

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

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

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

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

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

Приложение может получить доступ к данным одним из двух способов, как показано на следующем рисунке.

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

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

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

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

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

  • Делегированные разрешения, также называемые областями: разрешения, предоставляемые Microsoft Graph и представляющие операции, которые приложение может выполнять от имени пользователя, выполнившего вход. Приложению может быть разрешено выполнять операцию от имени одного пользователя, но не от имени другого.
  • Разрешения пользователя. Разрешения, которые пользователь вошел в ресурс. Пользователь может быть владельцем ресурса, ресурсом может быть предоставлен общий доступ или им могут быть назначены разрешения через систему управления доступом на основе ролей (RBAC), например Microsoft Entra RBAC.

Пример сценария: делегированный доступ в Microsoft Graph

Конечная https://graph.microsoft.com/v1.0/me точка — это точка доступа к сведениям пользователя, выполнившего вход, который представляет ресурс, защищенный платформа удостоверений Майкрософт. Для делегированного доступа два фактора выполняются следующим образом:

  • Приложению должно быть предоставлено поддерживаемое делегированное разрешение Microsoft Graph, например делегированное разрешение User.Read от имени вошедшего пользователя.
  • Вошедшего в систему пользователя в этом сценарии является владельцем данных.

Примечание.

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

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

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

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

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

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

Примечание.

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

Пример сценария: доступ только для приложений в Microsoft Graph

Конечная https://graph.microsoft.com/v1.0/users/delta точка позволяет опрашивать изменения в пользовательских данных. При доступе только для приложений приложению должно быть предоставлено поддерживаемое разрешение, например разрешение User.Read.All microsoft Graph, чтобы разрешить успешно запрашивать и получать изменения в пользовательских данных.

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

Чтобы вызвать 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).
  • Платформа удостоверений Майкрософт также совместим со многими сторонними библиотеками проверки подлинности.

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

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