Что такое проверка подлинности?

Предупреждение

В этом руководстве используется устаревшая конечная точка Azure Active Directory версии 1.0. Для новых проектов используйте платформу удостоверений Майкрософт.

Аутентификация — это акт запроса допустимых учетных данных у стороны, выполняющей вход. Это основа для создания субъекта безопасности, используемого для управления доступом и удостоверениями. Проще говоря, это процесс, подтверждающий, что вы являетесь тем, за кого себя выдаете. Аутентификация иногда сокращенно обозначается AuthN (Authentication).

Авторизация — это акт предоставления разрешения на выполнение какого-либо действия субъекту безопасности, прошедшему аутентификацию. Она указывает, к каким данным разрешено получить доступ и что с ними можно делать. Авторизация иногда сокращенно обозначается AuthZ (Authorization).

Azure Active Directory для разработчиков (v1.0) (Azure AD) упрощает процесс аутентификации для разработчиков приложений, предоставляя удостоверение как услугу, благодаря поддержке стандартных протоколов, например OAuth 2.0 и OpenID Connect, а также библиотекам с открытым кодом для различных платформ, которые позволяют оперативно приступать к программированию.

Модель программирования Azure AD предусматривает два основных варианта:

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

Основы проверки подлинности в Azure AD

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

Обзор входа в веб-приложение

Вот что необходимо знать о различных компонентах, показанных на схеме.

  • Azure AD является поставщиком удостоверений. Поставщик удостоверений отвечает за аутентификацию удостоверений пользователей и приложений, данные которых есть в каталоге организации, и выдает маркеры безопасности после успешной аутентификации этих пользователей и приложений.
  • Любое приложение, из которого нужно передать функцию аутентификации системе Azure AD, требуется зарегистрировать в Azure Active Directory (Azure AD). Azure AD регистрирует и уникальным образом идентифицирует приложение в каталоге.
  • Использование разработчиками библиотек проверки подлинности Azure AD с открытым кодом позволяет упростить выполнение проверки подлинности благодаря обработке библиотеками данных протокола. Дополнительные сведения см. в статьях о библиотеках проверки подлинности платформы удостоверений Майкрософт версий 2.0 и 1.0.
  • Как только пользователь прошел проверку подлинности, приложение должно проверить маркер безопасности пользователя, чтобы убедиться, что проверка подлинности прошла успешно. Можно найти краткие руководства, учебники и примеры кода на различных языках и платформах, в которых показано, что должно делать приложение.
    • Чтобы быстро создать приложение и добавить в него такие функциональные возможности, как получение и обновление маркеров, выполнение входа пользователя, отображение некоторых сведений о пользователе и многое другое, см. раздел документации с краткими руководствами.
    • Чтобы получить подробные инструкции на основе сценариев для основных задач по разработке аутентификации, таких как получение маркеров доступа и их использование в вызовах Microsoft Graph API и других API-интерфейсов, реализация входа в учетную запись Майкрософт в традиционном приложении на основе веб-браузера с помощью подключения OpenID, см. раздел документации с руководствами.
    • Чтобы скачать примеры кода, перейдите на сайт GitHub.
  • Поток запросов и ответов при аутентификации определяется применяемым протоколом аутентификации, например OAuth 2.0, OpenID Connect, WS-Federation или SAML 2.0. Дополнительные сведения о протоколах см. в разделе документации Основные понятия > Протокол проверки подлинности.

В приведенном выше примере сценария можно классифицировать приложения в зависимости от следующих двух ролей:

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

Как каждый поток выдает маркеры и коды

В зависимости от структуры клиента он может использовать один (или несколько) потоков проверки подлинности, поддерживаемых Azure AD. Эти потоки могут создавать различные маркеры (id_tokens, маркеры обновления, маркеры доступа), а также коды авторизации, и для их работы требуются разные маркеры. На диаграмме представлены общие сведения:

Поток Требования id_token Twitter, маркер обновления Код авторизации
Поток кода авторизации x x x x
Неявный поток x x
Гибридный поток OIDC x x
Активация маркера обновления маркер обновления x x x
Поток On-Behalf-Of Twitter, x x x
Учетные данные клиента x (только для приложений)

Маркеры, выданные через неявный режим, имеют ограничение длины, так как они передаются обратно в браузер через URL-адрес (где response_mode — query или fragment). Некоторые браузеры имеют ограничение на размер URL-адреса, который можно разместить в строке браузера, и завершаются ошибкой, если он слишком длинный. Поэтому у этих маркеров нет утверждений groups или wids.

Теперь, когда вы получили общие сведения, ознакомьтесь с API и моделью приложений с удостоверениями. Узнайте, как в Azure AD выполняется процесс подготовки, и просмотрите ссылки на подробные сведения о распространенных сценариях, которые поддерживаются в Azure AD.

Модель приложения

Azure AD представляет приложения, следующие определенной модели, предназначенной для выполнения двух основных функций:

  • Идентификация приложения в соответствии с протоколами аутентификации, которые оно поддерживает. При этом задействуется перечисление всех идентификаторов, URL-адресов, секретов и других связанных сведений, которые требуются во время аутентификации. Azure AD:

    • содержит все данные, необходимые для поддержки аутентификации во время выполнения;
    • содержит все данные для определения ресурсов, к которым приложению может потребоваться доступ, а также того, следует ли выполнить поданный запрос и при каких обстоятельствах;
    • предоставляет инфраструктуру для подготовки приложения в пределах клиента его разработчика, а также для любого другого клиента Azure AD.
  • Обработка согласия пользователя во время запроса маркера и упрощение динамической подготовки приложений между клиентами. Azure AD:

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

В Azure AD объект приложения описывает приложение как абстрактную сущность. Разработчики работают с приложениями. Во время развертывания Azure AD использует заданный объект приложения как схему для создания субъекта-службы, который представляет конкретный экземпляр приложения в пределах каталога или клиента. Именно субъект-служба определяет, что фактически приложение может делать в определенном целевом каталоге, кто может его использовать, к каким ресурсам у него есть доступ и т. д. Azure AD создает субъект-службу из объекта приложения посредством согласия.

На следующей схеме показан упрощенный процесс подготовки Azure AD на основе согласия. На ней показаны два клиента (A и B). Клиент A является владельцем приложения, а клиент B создает экземпляр приложения с помощью субъекта-службы.

Упрощенный процесс подготовки на основе согласия

В этом процессе подготовки:

  1. Пользователь клиента B пытается выполнить вход в приложение. Конечная точка авторизации запрашивает маркер безопасности для приложения.
  2. Учетные данные пользователя принимаются и проверяются для аутентификации.
  3. Пользователю предлагается предоставить согласие для приложения на получение доступа к клиенту B.
  4. Azure AD использует объект приложения в клиенте A как схему для создания субъекта-службы в клиенте B
  5. Пользователь получает запрошенный маркер безопасности.

Этот процесс можно повторить сколько угодно раз для других клиентов (C, D и т. д.). Клиент A сохраняет схему для приложения (объект приложения). Пользователи и администраторы всех остальных клиентов, где приложение получает согласие, сохраняют контроль над тем, что приложению разрешено делать, с помощью соответствующего объекта субъекта-службы в каждом клиенте. Дополнительные сведения см. в этой статье.

Утверждения в маркерах безопасности Azure AD

Маркеры безопасности (маркеры доступа и маркеры идентификации), которые выдает система Azure AD, содержат утверждения со сведениями о субъекте, для которого была выполнена проверка подлинности. Приложения могут использовать утверждения для различных задач, включая следующие:

  • проверка маркера безопасности;
  • идентификация клиента каталога субъекта;
  • Отображение сведений о пользователе
  • определение авторизации субъекта.

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

В таблице ниже приведено краткое описание каждого типа утверждений, которые создает Azure AD. Дополнительные сведения см. в описании маркеров доступа и маркеров идентификаторов, выдаваемых Azure AD.

Утверждение Описание
Идентификатор приложения Идентифицирует приложение, которое использует маркер.
Аудитория Идентифицирует ресурс получателя, для которого предназначен маркер.
Application Authentication Context Class Reference Показывает, как клиент прошел проверку подлинности (открытый клиент или конфиденциальный клиент).
Время выполнения проверки подлинности Фиксирует дату и время выполнения сеанса проверки подлинности.
Метод проверки подлинности Указывает способ проверки подлинности субъекта маркера (с помощью пароля, сертификата и т. д.).
Имя Предоставляет имя пользователя, как задано в Azure AD.
Группы Содержит идентификаторы объектов для групп Azure AD, членом которых является пользователь.
Поставщик удостоверений Фиксирует поставщика удостоверений, который проверил подлинность субъекта маркера.
Выдано в Фиксирует время, когда был выдан маркер, часто используется для определения "степени свежести" маркера.
Издатель Идентифицирует STS, который выдал маркер, а также клиента Azure AD.
Фамилия Предоставляет фамилию пользователя, как задано в Azure AD.
Имя Предоставляет удобное для восприятия значение, которое идентифицирует субъект маркера.
Идентификатор объекта Содержит неизменяемый, уникальный идентификатор субъекта в Azure AD.
Роли Содержит простые имена ролей приложения в Azure AD, которые предоставлены пользователю.
Область Указывает разрешения, предоставленные клиентскому приложению.
Субъект Указывает участника, сведения о котором утверждает маркер.
Идентификатор клиента Содержит неизменяемый, уникальный идентификатор клиента каталога, который выдал маркер.
Token Lifetime Определяет интервал времени, в течение которого маркер является действительным.
Имя участника-пользователя Содержит имя участника-пользователя субъекта.
Версия Содержит номер версии маркера.

Дальнейшие действия