OAuth 2.0을 사용하여 REST API에 대한 액세스 인증

Azure DevOps Services

앱에서 사용자 이름 및 암호를 계속 요청하지 않도록 REST API 액세스를 위해 웹앱 사용자를 인증하는 방법을 알아봅니다.

참고 항목

  • OAuth 2.0은 Azure DevOps Server에서 지원되지 않으므로 다음 지침은 Azure DevOps Services 사용자를 위한 것입니다. 클라이언트 라이브러리는 Azure DevOps Server 기능을 확장하기 위해 특별히 빌드된 일련의 패키지입니다. 온-프레미스 사용자의 경우 클라이언트 라이브러리, Windows 인증 또는 PAT(개인용 액세스 토큰)를 사용하여 사용자를 대신하여 인증하는 것이 좋습니다.
  • 자세한 내용은 C# OAuth GitHub 샘플을 참조 하세요.

OAuth 2.0 정보

Azure DevOps Services는 OAuth 2.0 프로토콜을 사용하여 사용자에 대한 앱에 권한을 부여하고 액세스 토큰을 생성합니다. 애플리케이션에서 REST API를 호출할 때 이 토큰을 사용합니다. 해당 사용자에 대해 Azure DevOps Services API를 호출할 때 해당 사용자의 액세스 토큰을 사용합니다. 액세스 토큰이 만료되므로 만료된 경우 액세스 토큰을 새로 고칩니다.

Process to get authorization.

사용 가능한 OAuth 모델

OAuth 2.0 앱을 만들 때 Microsoft Entra ID OAuth를 사용합니다. 여전히 Azure DevOps OAuth 2.0을 지원하지만 현재는 이 모델에 투자하지 않습니다.

Microsoft Entra ID OAuth

Microsoft Entra ID OAuth 앱을 만들면 앱에 Azure DevOps 액세스 토큰이 아닌 Microsoft Entra 토큰이 발급됩니다. 이러한 토큰은 만료되기 전에 표준 1시간 동안 지속됩니다.

자세한 내용은 다음 문서를 참조하세요.

참고 항목

다른 API를 사용하는 앱을 만들 때 해당 API에 필요한 범위를 선택해야 합니다.

Azure DevOps OAuth

기존 앱의 경우 Azure DevOps OAuth 가이드를 사용합니다. 권한이 부여된 Azure DevOps 앱을 관리할 수도 있습니다.

범위

개발자는 사용자에게 필요한 범위를 지정해야 합니다. 범위는 두 OAuth 모델에서 모두 사용할 수 있습니다. 다음 범위는 위임된(사용자를 대신하여) 흐름을 통해서만 사용할 수 있습니다. 앱에 필요한 범위를 확인하려면 사용 중인 각 API에 대한 API 참조 페이지의 헤더를 scopes 확인합니다.

일부 범위는 다른 범위(예 code_manage : 포함)를 포함 code_write할 수 있습니다. 사용자의 범위 동의를 요청할 때 필요한 최소 범위 수를 고려합니다.

Important

범위는 REST API에 대한 액세스만 사용하도록 설정하고 Git 엔드포인트를 선택합니다. SOAP API 액세스는 지원되지 않습니다.

범주 범위 이름 설명
에이전트 풀 vso.agentpools 에이전트 풀(읽기) 태스크, 풀, 큐, 에이전트 및 에이전트에 대해 현재 실행 중이거나 최근에 완료된 작업을 볼 수 있는 기능을 부여합니다.
vso.agentpools_manage 에이전트 풀(읽기, 관리) 풀, 큐 및 에이전트를 관리하는 기능을 부여합니다.
vso.environment_manage 환경(읽기, 관리) 풀, 큐, 에이전트 및 환경을 관리하는 기능을 부여합니다.
분석 vso.analytics 분석(읽기) 분석 데이터를 쿼리하는 기능을 부여합니다.
감사 vso.auditlog 감사 로그(읽기) 사용자에게 감사 로그를 읽을 수 있는 기능을 부여합니다.
vso.auditstreams_manage 감사 스트림(읽기) 사용자에게 감사 스트림을 관리하는 기능을 부여합니다.
빌드 vso.build 빌드(읽기) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.build_execute 빌드(읽기 및 실행) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 빌드를 큐에 대기하고 빌드 속성을 업데이트하며 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
코드 vso.code 코드(읽기) 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 소스 코드 및 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 코드를 검색하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.code_write 코드(읽기 및 쓰기) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 끌어오기 요청 및 코드 검토를 만들고 관리하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다.
vso.code_manage 코드(읽기, 쓰기 및 관리) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다.
vso.code_full 코드(전체) 소스 코드, 커밋에 대한 메타데이터, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 모든 권한을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다. 클라이언트 OM API에 대한 제한된 지원도 포함됩니다.
vso.code_status 코드(상태) 커밋 및 끌어오기 요청 상태 읽고 쓸 수 있는 기능을 부여합니다.
커넥트 서버 vso.connected_server 커넥트 서버 온-프레미스 연결된 서버에서 필요한 엔드포인트에 액세스할 수 있는 기능을 부여합니다.
권리 유형 vso.entitlements 권한(읽기) 계정 자격을 얻기 위해 라이선스 권한 엔드포인트에 대한 읽기 전용 액세스를 제공합니다.
vso.memberentitlementmanagement MemberEntitlement 관리(읽기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 읽을 수 있는 기능을 부여합니다.
vso.memberentitlementmanagement_write MemberEntitlement 관리(쓰기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 관리할 수 있는 기능을 부여합니다.
확장 vso.extension 확장(읽기) 설치된 확장을 읽을 수 있는 기능을 부여합니다.
vso.extension_manage 확장(읽기 및 관리) 설치된 확장에 대해 다른 관리 작업을 설치, 제거 및 수행할 수 있는 기능을 부여합니다.
vso.extension.data 확장 데이터(읽기) 설치된 확장에 의해 저장된 데이터(설정 및 문서)를 읽을 수 있는 기능을 부여합니다.
vso.extension.data_write 확장 데이터(읽기 및 쓰기) 설치된 확장 프로그램에서 저장한 데이터(설정 및 문서)를 읽고 쓸 수 있는 기능을 부여합니다.
그래프 및 ID vso.graph 그래프(읽기) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽을 수 있는 기능을 부여합니다.
vso.graph_manage 그래프(관리) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽고 사용자, 그룹 및 그룹 멤버 자격을 추가하는 기능을 부여합니다.
vso.identity ID(읽기) ID 및 그룹을 읽을 수 있는 기능을 부여합니다.
vso.identity_manage ID(관리) ID 및 그룹을 읽고, 쓰고, 관리할 수 있는 기능을 부여합니다.
컴퓨터 그룹 vso.machinegroup_manage 배포 그룹(읽기, 관리) 배포 그룹 및 에이전트 풀을 관리하는 기능을 제공합니다.
마켓플레이스 vso.gallery Marketplace 공용 및 개인 항목 및 게시자에 대한 읽기 권한을 부여합니다.
vso.gallery_acquire Marketplace(취득) 읽기 액세스 권한 및 항목 획득 기능을 부여합니다.
vso.gallery_publish Marketplace(게시) 읽기 액세스 권한 및 항목 업로드, 업데이트 및 공유 기능을 부여합니다.
vso.gallery_manage Marketplace(관리) 읽기 액세스 권한과 항목 및 게시자를 게시하고 관리하는 기능을 부여합니다.
알림 vso.notification 알림(읽기) 필터링 가능한 필드 값을 포함하여 구독 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_write 알림(쓰기) 필터링 가능한 필드 값을 포함하여 구독에 대한 읽기 및 쓰기 액세스 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_manage 알림(관리) 필터링 가능한 필드 값을 포함하여 구독에 대한 읽기, 쓰기 및 관리 액세스 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_diagnostics 알림(진단) 알림 관련 진단 로그에 대한 액세스를 제공하고 개별 구독에 진단 사용하도록 설정하는 기능을 제공합니다.
패키징 vso.packaging 패키징(읽기) 피드 및 패키지를 읽을 수 있는 기능을 부여합니다.
vso.packaging_write 패키징(읽기 및 쓰기) 피드 및 패키지를 만들고 읽을 수 있는 기능을 부여합니다.
vso.packaging_manage 패키징(읽기, 쓰기 및 관리) 피드 및 패키지를 만들고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 부여합니다.
파이프라인 리소스 vso.pipelineresources_use 파이프라인 리소스(사용) 보호된 리소스를 사용하도록 파이프라인의 요청을 승인하는 기능을 부여합니다( 에이전트 풀, 환경, 큐, 리포지토리, 보안 파일, 서비스 연결 및 변수 그룹).
vso.pipelineresources_manage 파이프라인 리소스(사용 및 관리) 보호된 리소스를 관리하거나 보호된 리소스를 사용하도록 파이프라인의 요청(에이전트 풀, 환경, 큐, 리포지토리, 보안 파일, 서비스 연결 및 변수 그룹)을 관리하는 기능을 부여합니다.
프로젝트 및 팀 vso.project 프로젝트 및 팀(읽기) 프로젝트 및 팀을 읽을 수 있는 기능을 부여합니다.
vso.project_write 프로젝트 및 팀(읽기 및 쓰기) 프로젝트 및 팀을 읽고 업데이트할 수 있는 기능을 부여합니다.
vso.project_manage 프로젝트 및 팀(읽기, 쓰기 및 관리) 프로젝트 및 팀을 만들고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 부여합니다.
엔지니어링 vso.release 릴리스(읽기) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트 읽기 기능을 부여합니다.
vso.release_execute 릴리스(읽기, 쓰기 및 실행) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트를 읽고 업데이트하는 기능과 새 릴리스를 큐에 대기하는 기능을 부여합니다.
vso.release_manage 릴리스(읽기, 쓰기, 실행 및 관리) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트를 읽고 업데이트하고 삭제하는 기능과 새 릴리스를 큐에 대기하고 승인하는 기능을 부여합니다.
보안 파일 vso.securefiles_read 보안 파일(읽기) 보안 파일을 읽을 수 있는 기능을 부여합니다.
vso.securefiles_write 보안 파일(읽기, 만들기) 보안 파일을 읽고 만드는 기능을 부여합니다.
vso.securefiles_manage 파일 보안(읽기, 만들기 및 관리) 보안 파일을 읽고, 만들고, 관리하는 기능을 부여합니다.
보안 vso.security_manage 보안(관리) 보안 권한을 읽고 쓰고 관리하는 기능을 부여합니다.
서비스 커넥트ions vso.serviceendpoint 서비스 엔드포인트(읽기) 서비스 엔드포인트를 읽을 수 있는 기능을 부여합니다.
vso.serviceendpoint_query 서비스 엔드포인트(읽기 및 쿼리) 서비스 엔드포인트를 읽고 쿼리하는 기능을 부여합니다.
vso.serviceendpoint_manage 서비스 엔드포인트(읽기, 쿼리 및 관리) 서비스 엔드포인트를 읽고 쿼리하고 관리하는 기능을 부여합니다.
설정 vso.settings 설정(읽기) 설정을 읽을 수 있는 기능을 부여합니다.
vso.settings_write 설정(읽기 및 쓰기) 설정을 만들고 읽을 수 있는 기능을 부여합니다.
Symbols vso.symbols 기호(읽기) 기호를 읽을 수 있는 기능을 부여합니다.
vso.symbols_write 기호(읽기 및 쓰기) 기호를 읽고 쓰는 기능을 부여합니다.
vso.symbols_manage 기호(읽기, 쓰기 및 관리) 기호를 읽고 쓰고 관리하는 기능을 부여합니다.
작업 그룹 vso.taskgroups_read 작업 그룹(읽기) 작업 그룹을 읽을 수 있는 기능을 부여합니다.
vso.taskgroups_write 작업 그룹(읽기, 만들기) 작업 그룹을 읽고 만드는 기능을 부여합니다.
vso.taskgroups_manage 작업 그룹(읽기, 만들기 및 관리) 작업 그룹을 읽고, 만들고, 관리할 수 있는 기능을 부여합니다.
팀 대시보드 vso.dashboards 팀 대시보드(읽기) 팀 대시보드 정보를 읽을 수 있는 기능을 부여합니다.
vso.dashboards_manage 팀 대시보드(관리) 팀 대시보드 정보를 관리하는 기능을 부여합니다.
테스트 관리 vso.test 테스트 관리(읽기) 테스트 계획, 사례, 결과 및 기타 테스트 관리 관련 아티팩트 읽기 기능을 부여합니다.
vso.test_write 테스트 관리(읽기 및 쓰기) 테스트 계획, 사례, 결과 및 기타 테스트 관리 관련 아티팩트 읽기, 만들기 및 업데이트 기능을 부여합니다.
스레드 vso.threads_full PR 스레드 요청 주석 스레드를 끌어오기 위해 읽고 쓰는 기능을 부여합니다.
토큰 vso.tokens 위임된 권한 부여 토큰 사용자에게 위임된 권한 부여 토큰을 관리하는 기능을 부여합니다.
vso.tokenadministration 토큰 관리istration 조직 관리자에게 기존 토큰을 관리(보기 및 해지)하는 기능을 부여합니다.
사용자 프로필 vso.profile 사용자 프로필(읽기) 프로필, 계정, 컬렉션, 프로젝트, 팀 및 기타 최상위 조직 아티팩트 읽기 기능을 부여합니다.
vso.profile_write 사용자 프로필(쓰기) 프로필에 쓸 수 있는 기능을 부여합니다.
변수 그룹 vso.variablegroups_read 변수 그룹(읽기) 변수 그룹을 읽을 수 있는 기능을 부여합니다.
vso.variablegroups_write 변수 그룹(읽기, 만들기) 변수 그룹을 읽고 만드는 기능을 부여합니다.
vso.variablegroups_manage 변수 그룹(읽기, 만들기 및 관리) 변수 그룹을 읽고, 만들고, 관리할 수 있는 기능을 부여합니다.
Wiki vso.wiki Wiki(읽기) 위키, 위키 페이지 및 위키 첨부 파일을 읽을 수 있는 기능을 부여합니다. 또한 위키 페이지를 검색할 수 있는 기능도 부여합니다.
vso.wiki_write Wiki(읽기 및 쓰기) 위키, 위키 페이지 및 위키 첨부 파일을 읽고, 만들고, 업데이트할 수 있는 기능을 부여합니다.
작업 항목 vso.work 작업 항목(읽기) 작업 항목, 쿼리, 보드, 영역 및 반복 경로 및 기타 작업 항목 추적 관련 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 쿼리를 실행하고, 작업 항목을 검색하고, 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.work_write 작업 항목(읽기 및 쓰기) 작업 항목 및 쿼리를 읽고, 만들고, 업데이트하고, 보드 메타데이터, 읽기 영역 및 반복 경로를 다른 작업 항목 추적 관련 메타데이터, 쿼리 실행 및 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.work_full 작업 항목(전체) 메타데이터를 추적하는 작업 항목, 쿼리, 백로그, 계획 및 작업 항목에 대한 모든 권한을 부여합니다. 또한 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 수신하는 기능을 제공합니다.
사용자 가장 user_impersonation 사용자 가장 Visual Studio Team Services REST API에 대한 모든 권한을 갖습니다. 매우 강력하기 때문에 주의해서 이 범위를 요청 및/또는 동의하세요!