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


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

Платформа удостоверений Майкрософт поддерживает проверку подлинности для различных современных архитектур приложений, все из них основаны на стандартных отраслевых протоколах OAuth 2.0 или OpenID Connect. В этой статье описываются типы приложений, которые можно создавать с помощью платформы удостоверений Microsoft вне зависимости от выбранного языка и платформы. В ходе чтения вы получите общее представление о возможных сценариях. Затем можно приступать к работе с кодом в сценариях приложений.

Основные принципы

Необходимо зарегистрировать каждое приложение, использующее платформу идентификации Microsoft в центре администрирования Microsoft Entra в разделе Регистрация приложений. В процессе регистрации приложения собираются и назначаются следующие значения для вашего приложения:

  • ИД приложения (клиента), идентифицирующий ваше приложение уникальным образом
  • Redirect URI, который можно использовать для направления ответов к вашему приложению
  • Несколько других значений, относящихся к сценарию, например поддерживаемые типы учетных записей

Дополнительные сведения см. в статье о регистрации приложения.

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

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

Типы приложений, поддерживаемые платформой идентификации Microsoft.

  • Одностраничное приложение (SPA)
  • Веб-приложение
  • Веб-интерфейс API
  • Мобильные и собственные приложения
  • Служба, управляющая программа, скрипт

Одностраничные приложения

Многие современные приложения имеют интерфейсное приложение с одной страницей (SPA), написанное в основном на JavaScript, часто с платформой, такой как Angular, React или Vue. Платформа удостоверений Майкрософт поддерживает эти приложения с помощью протокола OpenID Connect для проверки подлинности и одного из двух типов грантов авторизации, определенных OAuth 2.0. Используйте поток кода авторизации с Подтверждением Кода для Обмена (PKCE) при разработке SPA. Этот поток является более безопасным, чем неявный поток, который больше не рекомендуется. Дополнительные сведения см. в разделе предпочтение потока кода авторизации.

Схема потока демонстрирует поток предоставления кода авторизации OAuth 2.0 (с сведениями об PKCE опущенными), где приложение получает код из конечной точки платформы удостоверений Майкрософт authorize и обменивает его на токен доступа и токен обновления посредством межсайтовых веб-запросов. Для одностраничных приложений токен доступа действителен в течение 1 часа и по истечении этого времени необходимо запросить новый код с помощью токена обновления. В дополнение к токену доступа, id_token, представляющий вошедшего в систему пользователя для клиентского приложения, обычно также запрашивается через тот же поток и/или отдельный запрос OpenID Connect (здесь не показан).

Схема, на которой показан поток кода авторизации OAuth 2.0 между одностраничным приложением и конечной точкой службы маркеров безопасности.

Чтобы увидеть это в действии, ознакомьтесь с кратким руководством. Войдите пользователей в одностраничные приложения (SPA) и вызовите API Microsoft Graph с помощью JavaScript.

Веб-приложения

Для веб-приложений (.NET, PHP, Java, Ruby, Python, Node), доступных пользователю через браузер, для входа пользователей можно использовать OpenID Connect. В OpenID Connect веб-приложение получает маркер идентификации. Это маркер безопасности, который проверяет удостоверение пользователя и предоставляет сведения о пользователе в форме утверждений.

// Partial raw ID token
abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...

// Partial content of a decoded ID token
{
    "name": "Casey Jensen",
    "email": "[email protected]",
    "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    ...
}

Дополнительные сведения о различных типах маркеров в платформе удостоверений Майкрософт, см. в справочнике по маркерам доступа и в справочнике по id_token.

В приложениях веб-сервера поток аутентификации для входа состоит из следующих базовых этапов.

Показывает поток проверки подлинности в веб-приложении

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

Узнайте больше, создав веб-приложение ASP.NET Core для авторизации пользователей и вызова API Microsoft Graph

Помимо простого входа, приложению веб-сервера может потребоваться доступ к другой веб-службе, например API передачи репрезентативного состояния (REST). В этом случае приложение веб-сервера участвует в объединенном потоке OpenID Connect и OAuth 2.0 с использованием потока кода авторизации OAuth 2.0. Дополнительные сведения об этом сценарии см. в нашем образце кода.

Веб-API

Вы можете использовать платформу идентификации Майкрософт для обеспечения безопасности веб-сервисов, таких как RESTful веб-API вашего приложения. Веб-API можно реализовать на множестве платформ и языков. Их также можно реализовать с помощью триггеров HTTP в функциях Azure. Веб-API вместо токенов идентификации и файлов cookie сеанса использует токен доступа OAuth 2.0 для защиты данных и аутентификации входящих запросов.

Объект, вызывающий веб-API, добавляет маркер доступа в начале заголовка авторизации HTTP-запроса, как показано ниже.

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
Accept: application/json
...

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

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

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

Показывает поток проверки подлинности в веб-API

Чтобы узнать, как защитить веб-API с помощью маркеров доступа OAuth2, ознакомьтесь с примерами кода веб-API в руководстве по защищенному веб-API.

Во многих случаях веб-интерфейсам API также требуется выполнять исходящие запросы к другим нижестоящим веб-API, защищенным платформой удостоверений Microsoft. Для этого веб-API могут воспользоваться потоком On-Behalf-Of (OBO), который позволяет веб-API обменивать входящие маркеры доступа для использования другого маркера доступа в исходящих запросах. Дополнительную информацию см. в разделе Платформа удостоверений Microsoft и поток On-Behalf-Of в OAuth 2.0.

Мобильные и собственные приложения

Приложениям, установленным на устройстве, например мобильным и классическим приложениям, часто требуется доступ к внутренним службам или интерфейсам веб-API, которые хранят данные и выполняют различные функции от имени пользователя. В этих приложениях можно реализовать процесс входа и авторизации во внутренних службах с помощью потока кода авторизации OAuth 2.0.

В этом потоке приложение при входе пользователя в систему получает код авторизации от платформы удостоверений Майкрософт. Код авторизации представляет собой разрешение, полученное от приложения, на вызов внутренних служб от имени пользователя, выполнившего вход. Приложение может передать код авторизации в фоновом режиме, чтобы получить маркер доступа OAuth 2.0 и маркер обновления. Приложение может использовать маркер доступа для аутентификации в интерфейсах веб-API в HTTP-запросах и использовать маркер обновления, чтобы получать новые маркеры доступа после истечения срока действия старых маркеров.

Показывает поток аутентификации собственного приложения

Примечание.

Если приложение использует системный WebView по умолчанию, проверьте сведения о функции "Подтверждение входа" и коде ошибки AADSTS50199 в ошибках аутентификации и авторизации Microsoft Entra.

Серверы, демоны и скрипты

Приложениям, использующим долговременные процессы или работающим без взаимодействия с пользователем, тоже нужна возможность доступа к защищенным ресурсам, таким как интерфейсы веб-API. Такие приложения могут выполнять аутентификацию и получать маркеры, используя удостоверение приложения (а не делегированное удостоверение пользователя) с помощью потока учетных данных клиента OAuth 2.0. Можно подтвердить идентификацию приложения с помощью клиентского секрета или сертификата. Для получения дополнительной информации см. консольное приложение демона .NET с использованием платформы идентификации Microsoft.

В этом потоке приложение взаимодействует непосредственно с конечной точкой /token, чтобы получить доступ:

Показывает поток аутентификации управляющей программы

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

См. также