OAuth 2.0을 사용하여 REST API에 대한 액세스 인증
Azure DevOps Services
앱에서 사용자 이름 및 암호를 계속 요청하지 않도록 REST API 액세스를 위해 웹앱 사용자를 인증하는 방법을 알아봅니다.
참고 항목
OAuth 2.0은 Azure DevOps Server에서 지원되지 않으므로 다음 지침은 Azure DevOps Services 사용자를 위한 것입니다. 클라이언트 라이브러리는 Azure DevOps Server 기능을 확장하기 위해 특별히 빌드된 일련의 패키지입니다. 온-프레미스 사용자의 경우 클라이언트 라이브러리, Windows 인증 또는 PAT(개인용 액세스 토큰)를 사용하여 사용자를 대신하여 인증하는 것이 좋습니다.
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에서만 지원됩니다.