다음을 통해 공유


Azure DevOps REST API에 대한 OAuth 2.0 인증

Azure DevOps Services

OAuth 2.0을 사용하여 사용자가 자격 증명을 반복적으로 제공할 필요 없이 Azure DevOps REST API 액세스에 대한 애플리케이션을 인증하는 방법을 알아봅니다.

중요

Microsoft Entra ID OAuth는 새 애플리케이션에 권장되는 방법입니다 . Azure DevOps OAuth 2.0은 더 이상 사용되지 않으며 2025년 4월부터 더 이상 새 등록을 수락하지 않으며, 2026년 전체 사용 중단이 예정되어 있습니다.

OAuth 2.0이 Azure DevOps에서 작동하는 방식

비고

OAuth 2.0은 Azure DevOps Server가 아닌 Azure DevOps Services에만 사용할 수 있습니다. 온-프레미스 시나리오의 경우 클라이언트 라이브러리, Windows 인증 또는 개인용 액세스 토큰을 사용합니다.

Azure DevOps Services는 OAuth 2.0 프로토콜 을 사용하여 애플리케이션에 권한을 부여하고 REST API 호출에 대한 액세스 토큰을 생성합니다. 프로세스에는 다음이 포함됩니다.

  1. 앱 등록: OAuth 공급자에 애플리케이션 등록
  2. 사용자 권한 부여: 사용자가 앱에서 데이터에 액세스할 수 있는 권한을 부여합니다.
  3. 토큰 교환: 액세스 토큰을 수신하여 API 호출
  4. API 액세스: 인증된 REST API 요청에 토큰 사용
  5. 토큰 새로 고침: 액세스를 유지하기 위해 만료된 토큰 새로 고침

앱 등록에서 API 액세스로의 프로세스를 보여 주는 OAuth 2.0 권한 부여 흐름 다이어그램

OAuth 구현 옵션

애플리케이션의 요구 사항에 따라 적절한 OAuth 구현을 선택합니다.

Microsoft Entra ID OAuth는 Azure DevOps 애플리케이션에 대해 가장 안전하고 미래 지향적인 인증 방법을 제공합니다. 이점은 다음과 같습니다.

  • 엔터프라이즈 통합: 기존 Microsoft Entra ID 인프라와 원활하게 통합
  • 향상된 보안: 조건부 액세스 및 다단계 인증을 비롯한 고급 보안 기능
  • 향후 지원: 적극적으로 유지 관리 및 지원되는 플랫폼
  • 통합 ID: Microsoft 서비스 전반의 Single Sign-On 환경

시작: 구현 세부 정보 및 마이그레이션 지침 은 Microsoft Entra ID OAuth 가이드 를 따르세요.

Azure DevOps OAuth(사용되지 않음)

경고

Azure DevOps OAuth는 더 이상 사용되지 않습니다. 새 앱 등록은 2025년 4월부터 더 이상 허용되지 않으며, 서비스는 2026년에 전체 사용 중단될 예정입니다. 기존 애플리케이션을 Microsoft Entra ID OAuth로 마이그레이션합니다.

기존 Azure DevOps OAuth 애플리케이션의 경우:

팁 (조언)

마이그레이션 계획: Microsoft Entra ID OAuth로의 마이그레이션 계획을 일찍 시작합니다. 마이그레이션 가이드에서는 원활한 전환을 위한 팁과 고려 사항을 제공합니다.

OAuth 범위

범위는 애플리케이션에서 액세스할 수 있는 Azure DevOps 리소스를 정의합니다. Microsoft Entra ID OAuth와 Azure DevOps OAuth는 모두 동일한 범위 정의를 사용합니다.

주요 범위 고려 사항

  • 최소 권한 원칙: 애플리케이션에 필요한 최소 범위만 요청합니다.
  • 범위 상속: 일부 범위에는 다른 범위(예: vso.code_manage 포함)가 포함됩니다 vso.code_write.
  • API 검사: 범위는 REST API에 대한 액세스를 사용하도록 설정하고 Git 엔드포인트만 선택합니다(SOAP API는 지원되지 않음).
  • 사용자 동의: 사용자는 요청된 각 범위에 대한 권한을 명시적으로 부여해야 합니다.

필요한 범위 찾기

애플리케이션에 필요한 범위를 확인하려면 다음을 수행합니다.

  1. 사용하려는 각 엔드포인트에 대한 API 참조 설명서를 확인합니다.
  2. 각 API 페이지에서 scopes 헤더를 찾으세요.
  3. 중복 권한을 요청하지 않도록 범위 관계를 고려합니다.

사용 가능한 범위

카테고리 범위 이름 높은 권한 설명 다음 항목에서 상속됨
고급 보안 vso.advsec 고급보안(읽기) 경고, 결과 인스턴스, 분석 결과 인스턴스를 읽을 수 있는 기능을 부여합니다.
vso.advsec_write AdvancedSecurity(읽기 및 쓰기) sarif에서 분석을 업로드할 수 있는 기능을 부여합니다. vso.advsec
vso.advsec_manage AdvancedSecurity(읽기, 쓰기 및 관리) sarif에서 분석을 업로드할 수 있는 기능을 부여합니다. vso.advsec_write
에이전트 풀 vso.agentpools 에이전트 풀(읽기) 현재 실행 중이거나 최근 완료된 에이전트 작업뿐만 아니라 태스크, 풀, 큐, 에이전트를 볼 수 있는 기능을 제공합니다.
vso.agentpools_manage 에이전트 풀 (읽기, 관리) 풀, 큐 및 에이전트를 관리하는 기능을 부여합니다. vso.agentpools
vso.environment_manage 환경(읽기, 관리) 풀, 큐, 에이전트 및 환경을 관리하는 기능을 부여합니다. vso.agentpools_manage
분석 vso.analytics 애널리틱스(읽기) 분석 데이터를 쿼리하는 기능을 부여합니다.
회계 감사 vso.auditlog 감사 로그 (읽기) 사용자에게 감사 로그를 읽을 수 있는 기능을 부여합니다.
vso.auditstreams_manage 감사 흐름(읽기) 사용자에게 감사 스트림을 관리하는 기능을 부여합니다. vso.auditlog
빌드 vso.build 빌드 (읽기) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다. vso.hooks_write
vso.build_execute 빌드(읽기 및 실행) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 빌드를 큐에 대기하고 빌드 속성을 업데이트하며 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다. vso.build
코드 vso.code 코드(읽기) 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 소스 코드 및 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 코드를 검색하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다. vso.hooks_write
vso.code_write 코드(읽기 및 쓰기) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 끌어오기 요청 및 코드 검토를 만들고 관리하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다. vso.code
vso.code_manage 코드(읽기, 쓰기 및 관리) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다. vso.code_write
vso.code_full 코드(전체) 소스 코드, 커밋에 대한 메타데이터, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 모든 권한을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다. 클라이언트 OM API에 대한 제한된 지원도 포함됩니다. vso.code_manage
vso.code_status 코드(상태) 커밋 및 끌어오기 요청 상태를 읽고 쓰는 기능을 부여합니다.
연결된 서버 vso.connected_server 연결된 서버 온-프레미스 연결된 서버에서 필요한 엔드포인트에 액세스할 수 있는 기능을 부여합니다.
권리 vso.entitlements 권한 (읽기) 계정 자격을 얻기 위해 라이선스 권한 엔드포인트에 대한 읽기 전용 액세스를 제공합니다.
vso.memberentitlementmanagement 회원권한 관리 (읽기) 사용자의 정보, 라이선스, 및 그들이 액세스할 수 있는 프로젝트 및 확장을 읽을 수 있는 기능을 부여합니다.
vso.memberentitlementmanagement_write 회원권한 관리 쓰기 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 관리할 수 있는 기능을 부여합니다. vso.memberentitlementmanagement
확장 기능 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 연결 및 GitHub 리포지토리 데이터를 읽을 수 있는 기능을 부여합니다.
vso.githubconnections_manage GitHub 연결(읽기 및 관리) GitHub 연결 및 GitHub 리포지토리 데이터를 읽고 관리하는 기능을 부여합니다. vso.githubconnections
그래프 및 정체성 vso.graph 그래프 (읽기) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽을 수 있는 기능을 부여합니다.
vso.graph_manage 그래프(관리) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽고 사용자, 그룹 및 그룹 멤버 자격을 추가하는 기능을 부여합니다. vso.graph
vso.identity 정체성(읽기) ID 및 그룹을 읽을 수 있는 기능을 부여합니다.
vso.identity_manage 정체성(관리) ID 및 그룹을 읽고, 쓰고, 관리할 수 있는 기능을 부여합니다. vso.identity
컴퓨터 그룹 vso.machinegroup_manage 배포 그룹(읽기, 관리) 배포 그룹 및 에이전트 풀을 관리하는 기능을 제공합니다. vso.agentpools_manage
시장 vso.gallery 마켓플레이스 공용 및 개인 항목 및 게시자에 대한 읽기 권한을 부여합니다. vso.profile
vso.gallery_acquire Marketplace(구매) 읽기 액세스 권한 및 항목 획득 기능을 부여합니다. vso.gallery
vso.gallery_publish 마켓플레이스(게시하기) 읽기 액세스 권한 및 항목 업로드, 업데이트 및 공유 기능을 부여합니다. vso.gallery
vso.gallery_manage Marketplace (관리) 읽기 액세스 권한과 항목 및 게시자를 게시하고 관리하는 기능을 부여합니다. vso.gallery_publish
알림 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
설정 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
스레드 vso.threads_full PR 스레드 요청 주석 스레드를 끌어오기 위해 읽고 쓰는 기능을 부여합니다.
토큰 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
Wiki vso.wiki Wiki (읽기) 위키, 위키 페이지 및 위키 첨부 파일을 읽을 수 있는 기능을 부여합니다. 또한 위키 페이지를 검색할 수 있는 기능도 부여합니다.
vso.wiki_write Wiki(읽기 및 쓰기) 위키, 위키 페이지 및 위키 첨부 파일을 읽고, 만들고, 업데이트할 수 있는 기능을 부여합니다. vso.wiki
작업 항목 vso.work 작업 항목(읽기) 작업 항목, 쿼리, 보드, 영역 및 반복 경로 및 기타 작업 항목 추적 관련 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 쿼리를 실행하고, 작업 항목을 검색하고, 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다. vso.hooks_write
vso.work_write 작업 항목(읽기 및 쓰기) 작업 항목 및 쿼리를 읽고, 만들고, 업데이트하고, 보드 메타데이터, 읽기 영역 및 반복 경로를 다른 작업 항목 추적 관련 메타데이터, 쿼리 실행 및 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다. vso.work
vso.work_full 작업 항목(전체) 메타데이터를 추적하는 작업 항목, 쿼리, 백로그, 계획 및 작업 항목에 대한 모든 권한을 부여합니다. 또한 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 수신하는 기능을 제공합니다. vso.work_write
사용자 사칭 user_impersonation 사용자 사칭 Visual Studio Team Services REST API에 대한 모든 권한을 갖습니다. 매우 강력하기 때문에 주의해서 이 범위를 요청 및/또는 동의하세요!

자주 묻는 질문

Q: 모바일 애플리케이션에서 OAuth를 사용할 수 있나요?

A: 아니요. Azure DevOps Services는 앱 비밀을 안전하게 저장해야 하는 웹 서버 흐름(권한 부여 코드 흐름)만 지원합니다. 모바일 애플리케이션은 비밀을 안전하게 저장할 수 없으므로 OAuth는 모바일 시나리오에 적합하지 않습니다.

모바일 앱의 대안: 모바일 애플리케이션 인증 에 개인 액세스 토큰을 사용합니다.

Q: OAuth는 모든 Azure DevOps API에서 작동하나요?

A: OAuth는 REST API를 지원하고 Git 엔드포인트만 선택합니다. SOAP API는 OAuth 인증을 지원하지 않습니다.

Q: Azure DevOps OAuth에서 Microsoft Entra ID OAuth로 마이그레이션하려면 어떻게 해야 하나요?

A: 다음을 포함하는 Microsoft Entra ID OAuth 마이그레이션 가이드를 따르세요.

  • 단계별 마이그레이션 지침
  • 코드 예제 및 모범 사례
  • 사용 중단에 대한 일정 고려 사항

Q: 2026년 이후 기존 Azure DevOps OAuth 앱은 어떻게 되나요?

A: 2026년에 서비스가 완전히 사용되지 않을 때 기존 Azure DevOps OAuth 앱의 작동이 중지됩니다. 이 최종 기한 전에 Microsoft Entra ID OAuth로 마이그레이션을 계획합니다.

다음 단계

구현 경로를 선택합니다.

새 애플리케이션의 경우:

기존 Azure DevOps OAuth 앱의 경우:

즉각적인 지원이 필요한 기존 앱의 경우: