Autentikasi OAuth 2.0 untuk REST API Azure DevOps

Layanan Azure DevOps

Pelajari cara menggunakan OAuth 2.0 untuk mengautentikasi aplikasi Anda untuk akses REST API Azure DevOps tanpa mengharuskan pengguna untuk berulang kali memberikan kredensial.

Penting

Gunakan Microsoft Entra ID OAuth untuk aplikasi baru. Azure DevOps OAuth 2.0 tidak digunakan lagi dan tidak lagi menerima pendaftaran baru.

Cara kerja OAuth 2.0 dengan Azure DevOps

Catatan

OAuth 2.0 hanya tersedia untuk Layanan Azure DevOps, bukan Azure DevOps Server. Untuk skenario lokal, gunakan Pustaka klien, Autentikasi Windows, atau token akses pribadi.

Azure DevOps Services menggunakan protokol OAuth 2.0 untuk mengotorisasi aplikasi dan menghasilkan token akses untuk panggilan REST API. Proses ini melibatkan langkah-langkah berikut:

  • Pendaftaran aplikasi: Daftarkan aplikasi Anda dengan penyedia OAuth.
  • Otorisasi pengguna: Berikan izin bagi aplikasi Anda untuk mengakses data pengguna.
  • Pertukaran token: Terima token akses untuk melakukan panggilan API.
  • Akses API: Gunakan token untuk permintaan REST API yang diautentikasi.
  • Refresh token: Refresh token yang kedaluwarsa untuk mempertahankan akses.

Diagram yang menunjukkan proses alur otorisasi OAuth 2.0 dari pendaftaran aplikasi ke akses API.

Opsi implementasi OAuth

Pilih implementasi OAuth yang sesuai berdasarkan kebutuhan aplikasi Anda.

Microsoft Entra ID OAuth menyediakan metode autentikasi yang paling aman dan tahan masa depan untuk aplikasi Azure DevOps. Manfaatnya meliputi:

  • Integrasi perusahaan: Integrasi mulus dengan infrastruktur MICROSOFT Entra ID yang ada.
  • Keamanan yang Ditingkatkan: Fitur keamanan tingkat lanjut termasuk Akses Bersyarat Microsoft Entra dan Autentikasi Multifaktor.
  • Dukungan di masa mendatang: Platform yang dikelola dan didukung secara aktif.
  • Identitas terpadu: Pengalaman akses menyeluruh di seluruh layanan Microsoft.

Memulai: Ikuti panduan Microsoft Entra ID OAuth kami untuk detail implementasi dan panduan migrasi.

Azure DevOps OAuth (tidak digunakan lagi)

Peringatan

Azure DevOps OAuth tidak digunakan lagi. Pendaftaran aplikasi baru tidak lagi diterima per April 2025. Layanan ini dijadwalkan untuk dihentikan sepenuhnya pada tahun 2026. Migrasikan aplikasi yang ada ke Microsoft Entra ID OAuth.

Untuk aplikasi Azure DevOps OAuth yang ada:

Perencanaan migrasi: Mulai merencanakan migrasi Anda ke Microsoft Entra ID OAuth lebih awal. Panduan Migrasi memberikan tips dan pertimbangan untuk transisi yang lancar.

Cakupan OAuth

Cakupan menentukan sumber daya Azure DevOps yang dapat diakses aplikasi Anda. Microsoft Entra ID OAuth dan Azure DevOps OAuth menggunakan definisi cakupan yang sama.

Pertimbangan cakupan utama

  • Prinsip hak istimewa paling sedikit: Minta hanya cakupan minimum yang dibutuhkan aplikasi Anda.
  • Pewarisan cakupan: Beberapa cakupan mencakup yang lain (misalnya, vso.code_manage termasuk vso.code_write).
  • Cakupan API: Cakupan memungkinkan akses ke REST API dan memilih titik akhir Git saja (API SOAP tidak didukung).
  • Persetujuan pengguna: Pengguna harus secara eksplisit memberikan izin untuk setiap cakupan yang diminta.

Temukan cakupan yang diperlukan

Untuk menentukan cakupan apa yang dibutuhkan aplikasi Anda:

  • Periksa dokumentasi referensi API untuk setiap titik akhir yang anda rencanakan untuk digunakan.
  • Cari scopes header di setiap halaman API.
  • Untuk menghindari permintaan izin berlebihan, pertimbangkan hubungan cakupan.

Cakupan yang tersedia

Kategori Cakupan Nama Hak istimewa tinggi Deskripsi Mewarisi dari
Keamanan tingkat lanjut vso.advsec Keamanan tingkat lanjut (baca) Ya Memberikan kemampuan untuk membaca peringatan, instance hasil, dan instance hasil analisis.
vso.advsec_write Keamanan tingkat lanjut (baca dan tulis) Ya Memberikan kemampuan untuk mengunggah analisis dengan gaya huruf serif. vso.advsec
vso.advsec_manage Keamanan Lanjut (baca, tulis, dan kelola) Ya Memungkinkan untuk mengunggah analisis dalam font serif. vso.advsec_write
Kumpulan agen vso.agentpools Kumpulan Agen (Informasi Lengkap) Memberikan kemampuan melihat tugas, kumpulan, antrean, agen, dan pekerjaan yang saat ini berjalan atau baru-baru ini selesai untuk agen-agen tersebut.
vso.agentpools_manage Kumpulan agen (baca dan kelola) Ya Memberikan kemampuan untuk mengelola kumpulan, antrean, dan agen. vso.agentpools
vso.environment_manage Lingkungan (baca dan kelola) Ya Memberikan kemampuan untuk dapat mengelola kumpulan, antrean, agen, dan lingkungan. vso.agentpools_manage
Analitik vso.analytics Analisis (baca) Memberikan kemampuan untuk mengkueri data analitik.
Auditing vso.auditlog Log audit (baca) Memberikan kemampuan untuk membaca log audit kepada pengguna.
vso.auditstreams_manage Aliran audit (baca) Ya Memberikan kemampuan untuk mengelola aliran audit kepada pengguna. vso.auditlog
Build vso.build Bangun (baca) Memberikan kemampuan untuk mengakses artefak build, termasuk hasil build, definisi, dan permintaan, serta kemampuan untuk menerima pemberitahuan tentang peristiwa build melalui hook layanan. vso.hooks_write
vso.build_execute Kompilasi (baca dan jalankan) Ya Memungkinkan akses ke artefak pembangunan, termasuk hasil build, definisi, dan permintaan. Selain itu, menyediakan kemampuan untuk mengantrekan build, memperbarui properti build, dan menerima pemberitahuan tentang peristiwa build melalui service hook. vso.build
Kode vso.code Kode (dibaca) Memungkinkan pembacaan kode sumber dan metadata tentang komit, changeset, cabang, dan artefak pengendalian versi lainnya. Selain itu, memberikan kemampuan untuk mencari kode dan menerima pemberitahuan tentang peristiwa kontrol versi melalui kait layanan. vso.hooks_write
vso.code_write Kode (baca dan tulis) Ya Memberikan kemampuan untuk membaca, memperbarui, dan menghapus kode sumber serta mengakses metadata tentang commit, changeset, cabang, dan artefak kontrol versi lainnya. Juga memberikan kemampuan untuk membuat dan mengelola permintaan pull dan tinjauan kode dan menerima pemberitahuan tentang peristiwa kontrol versi melalui kait layanan. vso.code
vso.code_manage Kode (baca, tulis, dan kelola) Ya Memberikan kemampuan untuk membaca, memperbarui, dan menghapus kode sumber, mengakses metadata tentang commit, perubahan set, cabang, dan artefak kontrol-versi lainnya. Juga memberikan kemampuan untuk membuat dan mengelola repositori kode, membuat dan mengelola pull request dan ulasan kode, serta menerima pemberitahuan tentang peristiwa kontrol versi melalui pengait layanan. vso.code_write
vso.code_full Kode (penuh) Ya Memberikan akses penuh ke kode sumber, metadata tentang commit, changeset, cabang, dan artefak kontrol versi lainnya. Juga memberikan kemampuan untuk membuat dan mengelola repositori kode, membuat dan mengelola permintaan pull dan ulasan kode, dan menerima pemberitahuan tentang peristiwa kontrol versi melalui kait layanan. Juga termasuk dukungan terbatas untuk API Klien OM. vso.code_manage
vso.code_status Kode (status) Memberikan kemampuan untuk membaca dan menulis status commit dan pull request.
Server yang tersambung vso.connected_server Server yang tersambung Memberikan kemampuan untuk mengakses titik akhir yang diperlukan dari server yang terhubung lokal.
Hak Akses vso.entitlements Hak akses (baca) Memberikan akses baca-saja ke titik akhir pemberian hak lisensi untuk mendapatkan hak akun.
vso.memberentitlementmanagement Pengelolaan pemberian izin anggota (baca) Memberikan kemampuan untuk membaca pengguna, lisensi mereka, serta proyek dan ekstensi yang dapat mereka akses.
vso.memberentitlementmanagement_write Pengelolaan hak anggota (tulis) Ya Memberikan kemampuan untuk mengelola pengguna dan lisensi mereka serta proyek dan ekstensi yang dapat mereka akses. vso.memberentitlementmanagement
Extensions vso.extension Ekstensi (terbaca) Memberikan kemampuan untuk membaca ekstensi yang diinstal. vso.profile
vso.extension_manage Ekstensi (baca dan kelola) Ya Memberikan kemampuan untuk menginstal, menghapus instalan, dan melakukan tindakan administratif lainnya pada ekstensi yang diinstal. vso.extension
vso.extension.data Data ekstensi (dapat dibaca) Memberikan kemampuan untuk membaca data (pengaturan dan dokumen) yang disimpan oleh ekstensi yang diinstal. vso.profile
vso.extension.data_write Data ekstensi (baca dan tulis) Memberikan kemampuan untuk membaca dan menulis data (pengaturan dan dokumen) yang disimpan oleh ekstensi yang diinstal. vso.extension.data
Koneksi GitHub vso.githubconnections Koneksi GitHub (baca) Memberikan kemampuan untuk membaca koneksi GitHub dan data repositori GitHub.
vso.githubconnections_manage Koneksi GitHub (baca dan kelola) Ya Memberikan kemampuan untuk membaca dan mengelola koneksi GitHub dan data repositori GitHub. vso.githubconnections
Grafik dan identitas vso.graph Grafik (dibaca) Memberikan kemampuan untuk membaca informasi pengguna, grup, cakupan, dan keanggotaan grup.
vso.graph_manage Grafik (pengelolaan) Ya Memberikan kemampuan untuk membaca informasi keanggotaan pengguna, grup, cakupan, dan grup, menambahkan pengguna dan grup, dan mengelola keanggotaan grup. vso.graph
vso.identity Identitas (bacalah) Memberikan kemampuan untuk membaca identitas dan grup.
vso.identity_manage Identitas (Pengelolaan) Ya Memberikan kemampuan untuk membaca, menulis, dan mengelola identitas dan grup. vso.identity
Grup mesin vso.machinegroup_manage Grup penyebaran (baca, kelola) Ya Memberikan kemampuan untuk mengelola grup penyebaran dan kumpulan agen. vso.agentpools_manage
Marketplace vso.gallery Marketplace Memberikan akses baca ke item publik, item pribadi, dan penerbit. vso.profile
vso.gallery_acquire Marketplace (akuisisi) Memberikan akses membaca dan kemampuan untuk memperoleh barang. vso.gallery
vso.gallery_publish Marketplace (terbitkan) Ya Memberikan akses baca dan kemampuan untuk mengunggah, memperbarui, dan berbagi item. vso.gallery
vso.gallery_manage Marketplace (mengelola) Ya Memberikan akses baca dan kemampuan untuk menerbitkan dan mengelola item dan penerbit. vso.gallery_publish
Notifications vso.notification Pemberitahuan (terbaca) Memberikan akses baca ke langganan dan metadata peristiwa, termasuk nilai bidang yang dapat difilter. vso.profile
vso.notification_write Pemberitahuan (tulis) Memberikan akses baca dan tulis ke langganan dan akses baca ke metadata peristiwa, termasuk nilai bidang yang dapat difilter. vso.notification
vso.notification_manage Notifikasi (kelola) Memberikan akses membaca, menulis, dan manajemen terhadap langganan serta akses membaca terhadap metadata acara, termasuk nilai bidang yang dapat difilter. vso.notification_write
vso.notification_diagnostics Pemberitahuan (diagnostik) Memberikan akses ke log diagnostik terkait pemberitahuan dan memberikan kemampuan untuk mengaktifkan diagnostik untuk langganan individual. vso.notification
Kemasan vso.packaging Pengemasan (lihat informasi) Memberikan kemampuan untuk membaca umpan dan paket. vso.profile
vso.packaging_write Kemasan (baca dan tulis) Ya Memberikan kemampuan untuk membuat dan membaca umpan dan paket. vso.packaging
vso.packaging_manage Pengemasan (membaca, menulis, dan mengelola) Ya Memberikan kemampuan untuk membuat, membaca, memperbarui, dan menghapus umpan dan paket. vso.packaging_write
Sumber daya alur vso.pipelineresources_use Sumber daya alur (gunakan) Ya Memberikan kemampuan untuk menyetujui permintaan alur untuk menggunakan sumber daya yang dilindungi: kumpulan agen, lingkungan, antrean, repositori, file aman, koneksi layanan, dan grup variabel.
vso.pipelineresources_manage Sumber daya alur (gunakan dan kelola) Ya Memberikan kemampuan untuk mengelola sumber daya yang dilindungi atau permintaan alur untuk menggunakan sumber daya yang dilindungi: kumpulan agen, lingkungan, antrean, repositori, file aman, koneksi layanan, dan grup variabel. vso.pipelineresources_use
Proyek dan tim vso.project Proyek dan Tim (silakan baca) Memberikan kemampuan untuk membaca proyek-proyek dan tim.
vso.project_write Proyek dan tim (baca dan tulis) Memberikan kemampuan untuk membaca dan memperbarui proyek dan tim. vso.project
vso.project_manage Proyek dan tim (baca, tulis, dan kelola) Ya Memberikan kemampuan untuk membuat, membaca, memperbarui, dan menghapus proyek dan tim. vso.project_write
Pelepasan vso.release Rilis (baca dokumen) Memberikan kemampuan untuk membaca artefak rilis, termasuk rilis, definisi rilis, dan lingkungan rilis. vso.profile
vso.release_execute Rilis (baca, tulis, dan jalankan) Ya Memberikan kemampuan untuk membaca dan memperbarui artefak rilis, termasuk rilis, definisi rilis, dan lingkungan rilis. Juga memberikan kemampuan untuk mengantre rilis baru. vso.release
vso.release_manage Rilis (baca, tulis, jalankan, dan kelola) Ya Memberikan kemampuan untuk membaca, memperbarui, dan menghapus artefak rilis, termasuk rilis, definisi rilis, dan lingkungan rilis. Juga memberikan kemampuan untuk mengantre dan menyetujui rilis baru. vso.release_execute
File terjamin keamanannya vso.securefiles_read Mengamankan file (untuk dibaca) Ya Memberikan kemampuan untuk membaca file aman.
vso.securefiles_write File aman (baca dan buat) Ya Memberikan kemampuan untuk membaca dan membuat file aman. vso.securefiles_read
vso.securefiles_manage File aman (baca, buat, dan kelola) Ya Memberikan kemampuan untuk membaca, membuat, dan mengelola file yang aman. vso.securefiles_write
Keamanan vso.security_manage Keamanan (kelola) Ya Memberikan kemampuan untuk membaca, menulis, dan mengelola izin keamanan.
Koneksi layanan vso.serviceendpoint Titik akhir layanan (baca) Memberikan kemampuan untuk membaca titik akhir layanan. vso.profile
vso.serviceendpoint_query Titik akhir layanan (baca dan pencarian) Memberikan kemampuan untuk membaca dan mengkueri titik akhir layanan. vso.serviceendpoint
vso.serviceendpoint_manage Titik akhir layanan (baca, kueri, dan kelola) Ya Memberikan kemampuan untuk membaca, mengkueri, dan mengelola titik akhir layanan. vso.serviceendpoint_query
Pengait layanan vso.hooks Pengait layanan (baca) Memberikan kemampuan untuk membaca langganan hook layanan dan metadata, termasuk peristiwa yang didukung, konsumen, dan tindakan. (Tidak lagi publik.) vso.profile
vso.hooks_write Pengait layanan (baca dan tulis) Memberikan kemampuan untuk membuat dan memperbarui langganan layanan hook serta membaca metadata, termasuk peristiwa-peristiwa, konsumen, dan aksi-aksi yang didukung. (Tidak lagi publik.) vso.hooks
vso.hooks_interact Pengait layanan (berinteraksi) Memberikan kemampuan untuk berinteraksi dan melakukan tindakan pada peristiwa yang diterima melalui hook layanan. (Tidak lagi publik.) vso.profile
Pengaturan vso.settings Pengaturan (mode baca) Memberikan kemampuan untuk membaca pengaturan.
vso.settings_write Pengaturan (baca dan tulis) Memberikan kemampuan untuk membaca dan menulis pengaturan. vso.settings
Simbol vso.symbols Simbol-simbol (dibaca) Memberikan kemampuan untuk membaca simbol. vso.profile
vso.symbols_write Simbol (baca dan tulis) Memberikan kemampuan untuk membaca dan menulis simbol. vso.symbols
vso.symbols_manage Simbol (baca, tulis, dan kelola) Memberikan kemampuan untuk membaca, menulis, dan mengelola simbol. vso.symbols_write
Grup tugas vso.taskgroups_read Grup tugas (baca) Memberikan kemampuan untuk membaca grup tugas.
vso.taskgroups_write Kelompok tugas (baca dan buat) Memberikan kemampuan untuk membaca dan membuat grup tugas. vso.taskgroups_read
vso.taskgroups_manage Grup tugas (membaca, membuat, dan mengelola) Ya Memberikan kemampuan untuk membaca, membuat, dan mengelola grup tugas. vso.taskgroups_write
Dasbor tim vso.dashboards Dasbor tim (bisa dibaca) Memberikan kemampuan untuk membaca informasi dasbor tim.
vso.dashboards_manage Dasbor tim (pengelolaan) Memberikan kemampuan untuk mengelola informasi dasbor tim. vso.dashboards
Manajemen pengujian vso.test Manajemen pengujian (baca) Memberikan kemampuan untuk membaca rencana pengujian, kasus, hasil, dan artefak terkait manajemen pengujian lainnya. vso.profile
vso.test_write Manajemen pengujian (baca dan tulis) Memberikan kemampuan untuk membaca, membuat, dan memperbarui rencana pengujian, kasus, hasil, dan artefak terkait manajemen pengujian lainnya. vso.test
Threads vso.threads_full Percakapan PR Memberikan izin untuk membaca dan menulis pada utas komentar permintaan penarikan.
Beberapa Token vso.tokens Token otorisasi yang didelegasikan Ya Memberikan kemampuan untuk mengelola token otorisasi yang didelegasikan kepada pengguna.
vso.tokenadministration Administrasi token Ya Memberikan kemampuan untuk mengelola (melihat dan mencabut) token yang ada kepada administrator organisasi.
Profil pengguna vso.profile Profil pengguna (dibaca) Memberikan kemampuan untuk membaca profil, akun, koleksi, proyek, tim, dan artefak organisasi tingkat atas Lainnya.
vso.profile_write Profil pengguna (menulis) Memberikan kemampuan untuk menulis ke profil Anda. vso.profile
Grup variabel vso.variablegroups_read Grup variabel (baca) Memberikan kemampuan untuk membaca grup variabel.
vso.variablegroups_write Grup variabel (baca dan buat) Memberikan kemampuan untuk membaca dan membuat grup variabel. vso.variablegroups_read
vso.variablegroups_manage Grup variabel (baca, buat, dan kelola) Ya Memberikan kemampuan untuk membaca, membuat, dan mengelola grup variabel. vso.variablegroups_write
Wiki vso.wiki Wiki (dibaca) Memberikan kemampuan untuk membaca wiki, halaman wiki, dan lampiran wiki. Juga memberikan kemampuan untuk mencari halaman wiki.
vso.wiki_write Wiki (baca dan tulis) Memberikan kemampuan untuk membaca, membuat, dan memperbarui wiki, halaman wiki, dan lampiran wiki. vso.wiki
Tugas kerja vso.work Tugas kerja (dibaca) Memberikan kemampuan untuk membaca item kerja, kueri, papan, jalur area dan iterasi, dan metadata terkait pelacakan item kerja lainnya. Juga memberikan kemampuan untuk menjalankan kueri, mencari item kerja, dan menerima pemberitahuan tentang kejadian item kerja melalui pengait layanan. vso.hooks_write
vso.work_write Elemen kerja (baca dan tulis) Memberikan kemampuan untuk membaca, membuat, dan memperbarui item dan kueri kerja, memperbarui metadata papan, jalur area baca dan perulangan serta metadata terkait pelacakan item kerja lainnya, menjalankan kueri, dan menerima pemberitahuan tentang peristiwa item kerja melalui kait layanan. vso.work
vso.work_full Item kerja (lengkap) Memberikan akses penuh ke item kerja, kueri, backlog, rencana, dan metadata pelacakan item kerja. Juga memberikan kemampuan untuk menerima pemberitahuan tentang peristiwa item kerja melalui hook layanan. vso.work_write
Peniruan pengguna user_impersonation Peniruan pengguna Ya Memberikan akses penuh ke REST API Visual Studio Team Services. Minta atau setujui cakupan ini dengan hati-hati karena sangat kuat.

Tanya jawab umum

Q. Dapatkah saya menggunakan OAuth dengan aplikasi seluler?

A. Tidak. Azure DevOps Services hanya mendukung alur server web (alur kode otorisasi), yang memerlukan penyimpanan rahasia aplikasi dengan aman. Aplikasi seluler tidak dapat menyimpan rahasia dengan aman, yang membuat OAuth tidak cocok untuk skenario seluler.

Alternatif untuk aplikasi seluler: Gunakan token akses pribadi untuk autentikasi aplikasi seluler.

Q. Apakah OAuth berfungsi dengan semua API Azure DevOps?

A. OAuth mendukung REST API dan memilih titik akhir Git saja. API SOAP tidak mendukung autentikasi OAuth.

Q. Bagaimana cara bermigrasi dari Azure DevOps OAuth ke Microsoft Entra ID OAuth?

A. Ikuti panduan migrasi OAuth ID Microsoft Entra, yang meliputi:

  • Instruksi migrasi langkah demi langkah.
  • Contoh kode dan praktik terbaik.
  • Pertimbangan garis waktu untuk penghentian.

Q. Apa yang terjadi pada aplikasi Azure DevOps OAuth saya yang sudah ada setelah 2026?

A. Aplikasi OAuth Azure DevOps yang ada berhenti berfungsi saat layanan sepenuhnya tidak digunakan lagi pada tahun 2026. Rencanakan migrasi Anda ke Microsoft Entra ID OAuth sebelum tenggat waktu ini.

Pilih jalur implementasi Anda