다음을 통해 공유


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를 호출할 때 해당 사용자의 액세스 토큰을 사용합니다. 액세스 토큰이 만료되므로 만료된 경우 액세스 토큰을 새로 고칩니다.

권한 부여를 가져오는 프로세스입니다.

사용 가능한 OAuth 모델

Important

새 OAuth 2.0 앱을 만들 때 Microsoft Entra ID OAuth를 사용합니다. Azure DevOps OAuth 2.0은 2026년에 사용 중단될 예정입니다. 2025년 3월부터 새 Azure DevOps OAuth 앱 수락을 중지합니다. 블로그 게시물에서 자세히 알아보세요.

Microsoft Entra ID OAuth

새로운 플랫폼을 구축하는 것은 압도적일 수 있습니다. Azure DevOps용 Microsoft Entra 앱을 빌드하는 이 가이드에서는 Microsoft Entra에서 OAuth 앱 개발 프로세스를 시작하도록 유용할 수 있는 유용한 링크를 수집합니다. Azure DevOps OAuth에서 Microsoft Entra OAuth로 마이그레이션하는 사람들을 위해 마이그레이션 작업 중에 고려해야 할 팁을 제공합니다.

Azure DevOps OAuth

기존 앱의 경우 Azure DevOps OAuth 앱 가이드를 참조 하세요. 리소스에 액세스할 수 있는 권한이 부여된 Azure DevOps 앱을 관리할 수도 있습니다.

범위

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

일부 범위는 다른 범위(예 vso.code_manage : 포함)를 포함 vso.code_write할 수 있습니다. 예를 들어 많은 범위가 .에서 vso.profile상속됩니다. 사용자의 범위 동의를 요청할 때 필요한 최소 범위 수를 고려합니다.

참고 항목

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

범주 범위 속성 설명 다음에서 상속
고급 보안 vso.advsec AdvancedSecurity(읽기) 경고, 결과 인스턴스, 분석 결과 인스턴스를 읽을 수 있는 기능을 부여합니다.
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 MemberEntitlement 관리(읽기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 읽을 수 있는 기능을 부여합니다.
vso.memberentitlementmanagement_write MemberEntitlement 관리(쓰기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 관리할 수 있는 기능을 부여합니다. 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
그래프 및 ID vso.graph 그래프(읽기) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽을 수 있는 기능을 부여합니다.
vso.graph_manage 그래프(관리) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽고 사용자, 그룹 및 그룹 멤버 자격을 추가하는 기능을 부여합니다. vso.graph
vso.identity ID(읽기) ID 및 그룹을 읽을 수 있는 기능을 부여합니다.
vso.identity_manage ID(관리) ID 및 그룹을 읽고, 쓰고, 관리할 수 있는 기능을 부여합니다. vso.identity
컴퓨터 그룹 vso.machinegroup_manage 배포 그룹(읽기, 관리) 배포 그룹 및 에이전트 풀을 관리하는 기능을 제공합니다. vso.agentpools_manage
Marketplace vso.gallery Marketplace 공용 및 개인 항목 및 게시자에 대한 읽기 권한을 부여합니다. vso.profile
vso.gallery_acquire Marketplace(취득) 읽기 액세스 권한 및 항목 획득 기능을 부여합니다. vso.gallery
vso.gallery_publish Marketplace(게시) 읽기 액세스 권한 및 항목 업로드, 업데이트 및 공유 기능을 부여합니다. 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_manage
프로젝트 및 팀 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_manage
보안 파일 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 설정(읽기 및 쓰기) 설정을 만들고 읽을 수 있는 기능을 부여합니다.
Symbols 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에 대한 모든 권한을 갖습니다. 매우 강력하기 때문에 주의해서 이 범위를 요청 및/또는 동의하세요!

FAQ(질문과 대답)

Q: 휴대폰 앱에서 OAuth를 사용할 수 있나요?

A: 아니요. Azure DevOps Services는 웹 서버 흐름만 지원하므로 앱 비밀을 안전하게 저장할 수 없으므로 OAuth를 구현할 방법이 없습니다.

Q: SOAP 엔드포인트 및 REST API와 함께 OAuth를 사용할 수 있나요?

A: 아니요. OAuth는 REST API에서만 지원됩니다.