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년 2월부터 새 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
FAQ(질문과 대답)
Q: 휴대폰 앱에서 OAuth를 사용할 수 있나요?
A: 아니요. Azure DevOps Services는 웹 서버 흐름만 지원하므로 앱 비밀을 안전하게 저장할 수 없으므로 OAuth를 구현할 방법이 없습니다.
Q: SOAP 엔드포인트 및 REST API와 함께 OAuth를 사용할 수 있나요?
A: 아니요. OAuth는 REST API에서만 지원됩니다.