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


Проверка подлинности OAuth 2.0 для REST API Azure DevOps

Azure DevOps Services

Узнайте, как использовать OAuth 2.0 для проверки подлинности приложений для доступа к REST API Azure DevOps, не требуя, чтобы пользователи неоднократно предоставляли учетные данные.

Внимание

Используйте идентификатор Microsoft Entra ID OAuth для новых приложений. Azure DevOps OAuth 2.0 устарел и больше не принимает новые регистрации.

Как OAuth 2.0 работает с Azure DevOps

Примечание.

OAuth 2.0 доступен только для Azure DevOps Services, а не для Azure DevOps Server. Для локальных сценариев используйте клиентские библиотеки, проверку подлинности Windows или личные маркеры доступа.

Azure DevOps Services использует протокол OAuth 2.0 для авторизации приложений и создания маркеров доступа для вызовов REST API. Процесс включает в себя следующие действия.

  • Регистрация приложения: регистрация приложения с помощью поставщика OAuth.
  • Авторизация пользователей: предоставьте приложению разрешение на доступ к данным пользователей.
  • Обмен токенами: получить токен доступа для выполнения вызовов API.
  • Доступ к API: используйте маркер для запросов REST API, прошедших проверку подлинности.
  • Обновление маркера: обновление маркеров с истекшим сроком действия для поддержания доступа.

Схема, демонстрирующая процесс авторизации OAuth 2.0 от регистрации приложения до доступа к API.

Параметры реализации OAuth

Выберите соответствующую реализацию OAuth в зависимости от потребностей приложения.

Microsoft Entra ID OAuth предоставляет наиболее безопасный и будущий метод проверки подлинности для приложений Azure DevOps. Она предлагает следующие преимущества:

  • Интеграция предприятия: бесшовная интеграция с существующей инфраструктурой Microsoft Entra ID.
  • Улучшенная безопасность: расширенные функции безопасности включают условный доступ Microsoft Entra и многофакторную проверку подлинности.
  • Будущая поддержка: платформа, которая активно обслуживается и поддерживается.
  • Единое удостоверение: единый вход в службах Майкрософт.

Начните: Следуйте нашему руководству OAuth по идентификатору Microsoft Entra ID для получения сведений о реализации и рекомендаций по миграции.

Azure DevOps OAuth (не рекомендуется)

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

Azure DevOps OAuth устарел. Новые регистрации приложений больше не принимаются по состоянию на апрель 2025 года. Служба намечена на полное прекращение в 2026 году. Миграция существующих приложений на Microsoft Entra ID OAuth.

Для существующих OAuth-приложений Azure DevOps:

Планирование миграции: Начните планирование вашей миграции на Microsoft Entra ID OAuth. Руководство по миграции содержит советы и рекомендации по плавному переходу.

Области OAuth

Области определяют, к каким ресурсам Azure DevOps может получить доступ ваше приложение. Microsoft Entra ID OAuth и Azure DevOps OAuth используют одни и те же области действия.

Основные соображения по ключевым областям

  • Принцип наименьшей привилегии: запрашивать только минимальные области, необходимые приложению.
  • Наследование областей: некоторые области включают другие (например, vso.code_manage включают vso.code_write).
  • Охват API: области обеспечивают доступ к REST API и выбирают только конечные точки Git (API SOAP не поддерживаются).
  • Согласие пользователя. Пользователи должны явно предоставить разрешение для каждой запрошенной области.

Поиск необходимых областей

Чтобы определить области, необходимые приложению, выполните приведенные ниже действия.

  • Ознакомьтесь со справочной документацией по API для каждой конечной точки, которую вы планируете использовать.
  • Найдите заголовок на каждой scopes странице API.
  • Чтобы избежать запроса избыточных разрешений, рассмотрите связи области действия.

Доступные области

Категория Область Имя Высокий уровень привилегий Описание Наследует от
Расширенная безопасность vso.advsec Расширенная безопасность (чтение) Да Предоставляет возможность читать оповещения, экземпляры результатов и экземпляры результатов анализа.
vso.advsec_write Расширенная безопасность (чтение и запись) Да Предоставляет возможность загружать анализы в формате шрифта с засечками. vso.advsec
vso.advsec_manage Расширенная безопасность (чтение, запись и управление) Да Предоставляет возможность загружать анализы в рамках серии. vso.advsec_write
Пулы агентов vso.agentpools Пулы агентов (просмотр) Предоставляет возможность просматривать задачи, пулы, очереди, агентов, а также текущие или недавно завершенные задания для агентов.
vso.agentpools_manage Пулы агентов (доступ и управление) Да Предоставляет возможность управлять пулами, очередями и агентами. vso.agentpools
vso.environment_manage Среда (чтение и управление) Да Предоставляет возможность управлять пулами, очередями, агентами и окружениями. vso.agentpools_manage
Аналитика vso.analytics Аналитика (только для чтения) Предоставляет возможность запрашивать данные аналитики.
Auditing vso.auditlog Журнал аудита (чтение) Предоставляет пользователям возможность читать журнал аудита.
vso.auditstreams_manage Потоки аудита (чтение) Да Предоставляет пользователям возможность управлять потоками аудита. vso.auditlog
Build vso.build Сборка (читать) Предоставляет возможность доступа к артефактам сборки, включая результаты сборки, определения и запросы, а также возможность получать уведомления о событиях сборки через сервисные хуки. vso.hooks_write
vso.build_execute Сборка (чтение и исполнение) Да Предоставляет возможность доступа к артефактам сборки, включая результаты сборки, определения и запросы. Кроме того, предоставляет возможность очереди сборки, обновления свойств сборки и получения уведомлений о событиях сборки с помощью перехватчиков служб. vso.build
Code vso.code Код (чтение) Предоставляет возможность читать исходный код и метаданные о коммитах, наборах изменений, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность искать код и получать уведомления о событиях управления версиями с помощью хуков сервисов. vso.hooks_write
vso.code_write Код (чтение и запись) Да Предоставляет возможность читать, обновлять и удалять исходный код и получать метаданные о фиксациях, изменениях, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать и управлять запросами на вытягивание, проводить обзоры кода и получать уведомления о событиях системы управления версиями через сервисные хуки. vso.code
vso.code_manage Код (чтение, запись и управление) Да Предоставляет возможность читать, обновлять и удалять исходный код, получать доступ к метаданным о фиксациях, изменениях, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать и управлять репозиториями кода, создавать pull-реквесты и проверки кода, а также получать уведомления о событиях в системе управления версиями с помощью вебхуков. vso.code_write
vso.code_full Код (полный) Да Предоставляет полный доступ к исходному коду, метаданным о фиксациях, наборах изменений, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать репозитории кода и управлять ими, создавать pull-реквесты и ревью кода и получать уведомления о событиях управления версиями с помощью служебных хуков. Также включает ограниченную поддержку клиентских OM API. vso.code_manage
vso.code_status Код (состояние) Предоставляет возможность читать и записывать фиксацию и статус Pull Request.
Подключенный сервер vso.connected_server Подключенный сервер Предоставляет возможность доступа к конечным точкам, необходимым с локального подключенного сервера.
Права доступа vso.entitlements Права (чтение) Предоставляет доступ только для чтения к конечным точкам лицензирования для получения прав доступа к учетной записи.
vso.memberentitlementmanagement Управление правами доступа участников (чтение) Предоставляет возможность читать пользователей, их лицензии и проекты и расширения, к которые они могут получить доступ.
vso.memberentitlementmanagement_write Управление правами участников (запись) Да Предоставляет возможность управлять пользователями и их лицензиями, а также проектами и расширениями, к которым они могут получить доступ. vso.memberentitlementmanagement
Extensions vso.extension Расширения (чтение данных) Предоставляет возможность чтения установленных расширений. vso.profile
vso.extension_manage Расширения (читать и управлять) Да Предоставляет возможность устанавливать, удалять и выполнять другие административные действия в установленных расширениях. vso.extension
vso.extension.data Чтение данных расширения Предоставляет возможность считывать данные (параметры и документы), хранящиеся установленными расширениями. vso.profile
vso.extension.data_write Данные расширения (чтение и запись) Предоставляет возможность чтения и записи данных (параметров и документов), хранящихся установленными расширениями. vso.extension.data
Подключения GitHub vso.githubconnections Подключения GitHub (чтение) Предоставляет доступ к данным подключений и репозиториев GitHub.
vso.githubconnections_manage Подключения GitHub (чтение и управление) Да Предоставляет возможность считывания подключений GitHub и данных репозиториев GitHub и управления ими. vso.githubconnections
Граф и идентичность vso.graph Граф (чтение) Предоставляет возможность читать сведения о пользователях, группах, областях применения и членстве в группах.
vso.graph_manage График (управление) Да Предоставляет возможность читать сведения о членстве пользователей, групп, областей и групп, добавлять пользователей и группы и управлять членством в группах. vso.graph
vso.identity Идентичность (чтение) Предоставляет возможность чтения идентификаторов и групп.
vso.identity_manage Идентификация (управление) Да Предоставляет права на чтение, запись и управление идентификацией и группами. vso.identity
Группа компьютеров vso.machinegroup_manage Группа внедрения (читать, управлять) Да Предоставляет возможность управлять группами развертывания и агентскими пулами. vso.agentpools_manage
Торговая площадка vso.gallery Торговая площадка Предоставляет доступ на чтение к общедоступным и личным объектам и публикациям. vso.profile
vso.gallery_acquire Marketplace (приобретение) Предоставляет доступ на чтение и возможность приобретения элементов. vso.gallery
vso.gallery_publish Marketplace (публикация) Да Предоставляет доступ на чтение и возможность загрузки, обновления и совместного использования элементов. vso.gallery
vso.gallery_manage Маркетплейс (управление) Да Предоставляет доступ для чтения и возможность публиковать и управлять элементами и издателями. vso.gallery_publish
Notifications vso.notification Уведомления (прочитанные) Предоставляет доступ на чтение к подпискам и метаданным событий, включая отфильтрованные значения полей. vso.profile
vso.notification_write Уведомления (запись) Предоставляет доступ на чтение и запись к подпискам и доступ на чтение к метаданным событий, включая отфильтрованные значения полей. vso.notification
vso.notification_manage Уведомления (управление) Предоставляет доступ на чтение, запись и управление подписками и доступ на чтение к метаданным событий, включая значения поля, допускающие фильтрацию. vso.notification_write
vso.notification_diagnostics Уведомления (диагностика) Предоставляет доступ к журналам диагностики, связанным с уведомлениями, и предоставляет возможность включить диагностику для отдельных подписок. vso.notification
Упаковка vso.packaging Упаковка (прочитать) Предоставляет возможность чтения веб-каналов и пакетов. vso.profile
vso.packaging_write Упаковка (чтение и запись) Да Предоставляет возможность создавать и читать каналы и пакеты. vso.packaging
vso.packaging_manage Упаковка (чтение, запись и управление) Да Предоставляет возможность создавать, читать, обновлять и удалять ленты и пакеты. vso.packaging_write
Ресурсы потока vso.pipelineresources_use Ресурсы конвейера (использование) Да Предоставляет возможность утвердить запрос конвейера на использование защищенного ресурса: пул агентов, среда, очередь, репозиторий, безопасные файлы, подключение к службе и группа переменных.
vso.pipelineresources_manage Ресурсы конвейера (использование и управление) Да Предоставляет возможность управлять защищенным ресурсом или запросом конвейера для использования защищенного ресурса: пул агентов, среда, очередь, репозиторий, безопасные файлы, подключение к службе и группа переменных. vso.pipelineresources_use
Проект и команда vso.project Проект и команда (обзор) Предоставляет доступ к чтению проектов и команд.
vso.project_write Проект и команда (чтение и запись) Предоставляет возможность читать и обновлять проекты и команды. vso.project
vso.project_manage Проект и команда (чтение, запись и управление) Да Предоставляет возможность создавать, читать, обновлять и удалять проекты и команды. vso.project_write
Релиз vso.release Релиз (чтение) Даёт возможность считывать артефакты релиза, включая сами релизы, их определения и среду релиза. vso.profile
vso.release_execute Выпуск (чтение, запись и выполнение) Да Предоставляет возможность считывания и обновления артефактов релиза, включая релизы, определения релизов и среду релиза. Кроме того, предоставляет возможность добавить в очередь новый выпуск. vso.release
vso.release_manage Выпуск (чтение, запись, выполнение и управление ими) Да Предоставляет возможность читать, обновлять и удалять артефакты релиза, включая релизы, определения релиза и среду релиза. Кроме того, предоставляет возможность постановки в очередь и утверждения нового релиза. vso.release_execute
Безопасные файлы vso.securefiles_read Защищенные файлы (чтение) Да Предоставляет возможность чтения защищенных файлов.
vso.securefiles_write Безопасные файлы (чтение и создание) Да Предоставляет возможность чтения и создания защищенных файлов. vso.securefiles_read
vso.securefiles_manage Безопасные файлы (чтение, создание и управление ими) Да Предоставляет возможность читать, создавать и управлять защищенными файлами. vso.securefiles_write
Безопасность vso.security_manage Безопасность (управление) Да Предоставляет возможность чтения, записи и управления разрешениями безопасности.
Служебные подключения vso.serviceendpoint Конечные точки сервиса (просмотр) Предоставляет возможность чтения конечных точек службы. vso.profile
vso.serviceendpoint_query Конечные точки сервиса (чтение и запросы) Предоставляет возможность чтения и выполнения запросов к конечным точкам службы. vso.serviceendpoint
vso.serviceendpoint_manage Конечные точки службы (чтение, запрос и управление) Да Предоставляет возможность чтения, запроса и управления конечными точками службы. vso.serviceendpoint_query
Механизмы сервисных подключений vso.hooks Служебные хуки (документация по чтению) Предоставляет возможность считывания подписок и метаданных службы, включая поддерживаемые события, потребителей и действия. (Больше не общедоступна.) vso.profile
vso.hooks_write Крючки сервиса (чтение и запись) Предоставляет возможность создавать и обновлять подписки на сервисные хуки и читать метаданные, включая поддерживаемые события, потребителей и действия. (Больше не общедоступна.) vso.hooks
vso.hooks_interact Перехватчики сервисов (взаимодействие) Предоставляет возможность взаимодействовать и выполнять действия с событиями, полученными через сервисные хуки. (Больше не общедоступна.) vso.profile
Settings vso.settings Параметры (чтение) Предоставляет возможность чтения параметров.
vso.settings_write Параметры (чтение и запись) Предоставляет возможность чтения и записи параметров. vso.settings
Символы vso.symbols Символы (чтение) Предоставляет возможность считывать символы. vso.profile
vso.symbols_write Символы (чтение и запись) Предоставляет возможность чтения и записи символов. vso.symbols
vso.symbols_manage Символы (чтение, запись и управление ими) Предоставляет возможность чтения, записи и управления символами. vso.symbols_write
Группы задач vso.taskgroups_read Группы задач (чтение) Предоставляет возможность просмотра групп задач.
vso.taskgroups_write Группы задач (чтение и создание) Предоставляет возможность читать и создавать группы задач. vso.taskgroups_read
vso.taskgroups_manage Группы задач (чтение, создание и управление ими) Да Предоставляет возможность читать, создавать и управлять группами задач. vso.taskgroups_write
Панель мониторинга группы vso.dashboards Панели мониторинга групп (чтение) Предоставляет возможность просматривать данные на командной панели мониторинга.
vso.dashboards_manage Панели мониторинга группы (управление) Предоставляет возможность управлять сведениями панели мониторинга группы. vso.dashboards
Управление тестами vso.test Управление тестами (доступ на чтение) Предоставляет возможность читать тестовые планы, тест-кейсы, результаты и другие объекты, связанные с управлением тестами. vso.profile
vso.test_write Управление тестами (чтение и запись) Предоставляет возможность читать, создавать и обновлять тестовые планы, варианты, результаты и другие артефакты, связанные с управлением тестами. vso.test
Threads vso.threads_full Треды PR Предоставляет возможность читать и писать в потоки комментариев pull request.
Tokens vso.tokens Делегированные токены авторизации Да Предоставляет пользователям возможность управлять делегированными маркерами авторизации.
vso.tokenadministration Администрирование токенов Да Предоставляет возможность управления (просмотром и отменой) существующих маркеров администраторам организации.
Профиль пользователя vso.profile Профиль пользователя (только для чтения) Предоставляет возможность читать профиль, учетные записи, коллекции, проекты, команды и другие артефакты организации верхнего уровня.
vso.profile_write Профиль пользователя (редактирование) Предоставляет возможность записи в профиль. vso.profile
Группы переменных vso.variablegroups_read Группы переменных (чтение) Предоставляет возможность чтения групп переменных.
vso.variablegroups_write Группы переменных (чтение и создание) Предоставляет возможность считывания и создания групп переменных. vso.variablegroups_read
vso.variablegroups_manage Группы переменных (чтение, создание и управление ими) Да Предоставляет возможность чтения, создания и управления группами переменных. vso.variablegroups_write
Вики vso.wiki Вики (читать) Предоставляет возможность читать вики, вики-страницы и вики-вложения. Кроме того, предоставляет возможность поиска на вики-страниц.
vso.wiki_write Вики (чтение и запись) Предоставляет возможность читать, создавать и обновлять вики, вики-страницы и вики-вложения. vso.wiki
Элементы работы vso.work Рабочие элементы (чтение) Предоставляет возможность считывать рабочие элементы, запросы, доски, области и пути итерации, а также другие метаданные, связанные с отслеживанием рабочих элементов. Кроме того, предоставляет возможность выполнять запросы, искать рабочие элементы и получать уведомления о событиях рабочих элементов через веб-хуки служб. vso.hooks_write
vso.work_write Рабочие задачи (чтение и запись) Предоставляет возможность читать, создавать и обновлять рабочие элементы и запросы, обновлять метаданные досок, читать пути областей и итераций и другие метаданные, связанные с отслеживанием рабочих элементов, выполнять запросы и получать уведомления о событиях рабочих элементов с помощью перехватчиков служб. vso.work
vso.work_full Полный список рабочих элементов Предоставляет полный доступ к рабочим элементам, запросам, невыполненной работе, планам и метаданным отслеживания рабочих элементов. Также предоставляет возможность получать уведомления о событиях рабочих элементов с помощью служебных хуков. vso.work_write
Олицетворение пользователя user_impersonation Олицетворение пользователя Да Предоставляет полный доступ к REST API Visual Studio Team Services. Запрашивайте или соглашайтесь с этой областью с осторожностью, поскольку она обладает значительной мощностью.

Часто задаваемые вопросы

Q. Можно ли использовать OAuth с мобильными приложениями?

А. Нет. Azure DevOps Services поддерживает только поток веб-сервера (поток кода авторизации), который требует безопасного хранения секрета приложения. Мобильные приложения не могут безопасно хранить секреты, что делает OAuth непригодным для мобильных сценариев.

Альтернатива мобильным приложениям: используйте личные маркеры доступа для проверки подлинности мобильных приложений.

Q. Работает ли OAuth со всеми API Azure DevOps?

А. OAuth поддерживает REST API и выбирает только конечные точки Git. API SOAP не поддерживают проверку подлинности OAuth.

Q. Как выполнить миграцию из Azure DevOps OAuth в Microsoft Entra ID OAuth?

А. Следуйте руководству по миграции OAuth с идентификатором Microsoft Entra ID, который включает в себя следующее:

  • Пошаговые инструкции по миграции.
  • Примеры кода и рекомендации.
  • Соображения по временной шкале для устаревания.

Q. Что происходит с существующим приложением OAuth Azure DevOps после 2026 г.?

А. Существующие приложения OAuth Azure DevOps перестанут работать, когда служба будет полностью устаревшей к 2026 году. Запланируйте миграцию на Microsoft Entra ID OAuth задолго до этого срока.

Выбор пути реализации