Menggunakan perwakilan layanan & identitas terkelola

Azure DevOps

Tambahkan perwakilan layanan Microsoft Entra dan identitas terkelola ke organisasi Azure DevOps Anda untuk memberikan akses ke sumber daya organisasi Anda. Bagi banyak tim, fitur ini dapat menjadi alternatif yang layak dan lebih disukai untuk token akses pribadi (PATs) ketika Anda mengautentikasi aplikasi yang mendukung alur kerja otomatisasi di perusahaan Anda.

Tentang perwakilan layanan dan identitas terkelola

Perwakilan layanan adalah objek keamanan dalam aplikasi Microsoft Entra yang menentukan apa yang dapat dilakukan aplikasi di penyewa tertentu. Mereka disiapkan di portal Azure selama proses pendaftaran aplikasi dan dikonfigurasi untuk mengakses sumber daya Azure, seperti Azure DevOps. Dengan menambahkan perwakilan layanan ke organisasi Anda dan menyiapkan izin di atasnya, kami dapat menentukan apakah perwakilan layanan berwenang untuk mengakses sumber daya organisasi Anda dan yang mana.

Identitas terkelola adalah fitur Microsoft Entra lain yang bertindak mirip dengan perwakilan layanan aplikasi. Objek ini menyediakan identitas untuk sumber daya Azure dan memungkinkan cara mudah bagi layanan yang mendukung autentikasi Microsoft Entra untuk berbagi kredensial. Ini adalah opsi menarik karena MICROSOFT Entra ID mengurus manajemen dan rotasi kredensial. Meskipun penyiapan untuk identitas terkelola mungkin terlihat berbeda pada portal Azure, Azure DevOps memperlakukan kedua objek keamanan sama dengan identitas baru di organisasi dengan izin yang ditentukan. Sepanjang sisa artikel ini, kami merujuk pada identitas terkelola dan perwakilan layanan secara bergantian sebagai perwakilan layanan, kecuali ditentukan.

Gunakan langkah-langkah berikut untuk mengautentikasi identitas ini ke Azure DevOps untuk memungkinkan mereka melakukan tindakan atas nama diri mereka sendiri.

Mengonfigurasi identitas terkelola dan perwakilan layanan

Implementasi Anda mungkin bervariasi, tetapi pada tingkat tinggi, langkah-langkah berikut membantu Anda mulai menggunakan perwakilan layanan dalam alur kerja Anda. Pertimbangkan untuk melihat salah satu aplikasi sampel kami untuk mengikuti contoh Anda sendiri.

1. Buat identitas terkelola baru atau perwakilan layanan aplikasi

Buat perwakilan layanan aplikasi atau identitas terkelola di portal Azure.

Membuat perwakilan layanan aplikasi

Saat Anda membuat pendaftaran aplikasi baru, objek aplikasi dibuat di ID Microsoft Entra. Perwakilan layanan aplikasi adalah representasi dari objek aplikasi ini untuk penyewa tertentu. Saat Anda mendaftarkan aplikasi sebagai aplikasi multipenyewa, ada objek perwakilan layanan unik yang mewakili objek aplikasi untuk setiap penyewa tempat aplikasi ditambahkan.

Informasi lebih lanjut:

Buat identitas terkelola

Membuat identitas terkelola di portal Azure berbeda secara signifikan dari menyiapkan aplikasi dengan perwakilan layanan. Sebelum memulai proses pembuatan, Anda harus terlebih dahulu mempertimbangkan jenis identitas terkelola mana yang ingin Anda buat:

  • Identitas terkelola yang ditetapkan sistem: Beberapa layanan Azure memungkinkan Anda mengaktifkan identitas terkelola langsung pada instans layanan. Saat Anda mengaktifkan identitas terkelola yang ditetapkan sistem, identitas dibuat di ID Microsoft Entra. Identitas ini dikaitkan dengan siklus hidup instans layanan tersebut. Jadi, ketika sumber daya dihapus, Azure akan secara otomatis menghapus identitas untuk Anda. Secara desain, hanya sumber daya Azure yang dapat menggunakan identitas ini untuk meminta token dari Microsoft Entra ID.
  • Identitas terkelola yang ditetapkan pengguna Anda juga dapat membuat identitas terkelola sebagai sumber daya Azure mandiri dengan membuat identitas terkelola yang ditetapkan pengguna dan menetapkannya ke satu atau beberapa instans layanan Azure. Untuk identitas terkelola yang ditetapkan pengguna, identitas ini dikelola secara terpisah dari sumber daya yang menggunakannya.

Untuk informasi selengkapnya, lihat artikel dan video berikut ini:

2. Menambahkan dan mengelola perwakilan layanan di organisasi Azure DevOps

Setelah mengonfigurasi perwakilan layanan di pusat admin Microsoft Entra, Anda harus melakukan hal yang sama di Azure DevOps dengan menambahkan perwakilan layanan ke organisasi Anda. Anda dapat menambahkannya melalui halaman Pengguna atau dengan API ServicePrincipalEntitlements. Karena mereka tidak dapat masuk secara interaktif, akun pengguna yang dapat menambahkan pengguna ke organisasi, proyek, atau tim harus menambahkannya. Pengguna tersebut termasuk Administrator Koleksi Proyek (PCA) atau Administrator Proyek dan Administrator Tim saat kebijakan "Izinkan administrator tim dan proyek untuk mengundang pengguna baru" diaktifkan.

Tip

Untuk menambahkan perwakilan layanan ke organisasi, masukkan aplikasi atau nama tampilan identitas terkelola. Jika Anda memilih untuk menambahkan perwakilan layanan secara terprogram melalui ServicePrincipalEntitlements API, pastikan untuk meneruskan id objek perwakilan layanan dan bukan id objek aplikasi.

Jika Anda adalah PCA, Anda juga dapat memberikan akses perwakilan layanan ke proyek tertentu dan menetapkan lisensi. Jika Anda bukan PCA, Anda harus menghubungi PCA untuk memperbarui keanggotaan proyek atau tingkat akses lisensi apa pun.

Screenshot of service principals and managed identities in the Users Hub.

Catatan

Anda hanya dapat menambahkan identitas terkelola atau perwakilan layanan untuk penyewa yang tersambung dengan organisasi Anda. Untuk mengakses identitas terkelola di penyewa lain, lihat solusi di FAQ.

Setelah perwakilan layanan Anda ditambahkan ke organisasi, Anda dapat memperlakukannya mirip dengan akun pengguna standar. Anda dapat menetapkan izin langsung pada perwakilan layanan, menambahkannya ke grup keamanan dan tim, menetapkannya ke tingkat akses apa pun, dan menghapusnya dari organisasi. Anda juga dapat menggunakan Service Principal Graph APIs untuk melakukan operasi CRUD pada perwakilan layanan.

Manajemen perwakilan layanan berbeda dari akun pengguna dengan cara utama berikut:

  • Perwakilan layanan tidak memiliki email dan dengan demikian, mereka tidak dapat diundang ke organisasi melalui email.
  • Aturan grup untuk lisensi saat ini tidak berlaku untuk perwakilan layanan. Jika Anda ingin menetapkan tingkat akses ke perwakilan layanan, yang terbaik adalah melakukannya secara langsung.
  • Meskipun perwakilan layanan dapat ditambahkan ke grup Microsoft Entra (dalam portal Azure), kami memiliki batasan teknis saat ini yang mencegah kami menampilkannya dalam daftar anggota grup Microsoft Entra. Batasan ini tidak berlaku untuk grup Azure DevOps. Meskipun demikian, perwakilan layanan masih mewarisi izin grup apa pun yang ditetapkan di atas grup Microsoft Entra tempat mereka berada.
  • Tidak semua pengguna dalam grup Microsoft Entra segera menjadi bagian dari organisasi Azure DevOps hanya karena admin membuat grup dan menambahkan grup Microsoft Entra ke dalamnya. Kami memiliki proses yang disebut "materialisasi" yang terjadi setelah pengguna dari grup Microsoft Entra masuk ke organisasi untuk pertama kalinya. Pengguna yang masuk ke organisasi memungkinkan kami menentukan pengguna mana yang harus diberikan lisensi. Karena rincian masuk tidak dimungkinkan untuk perwakilan layanan, admin harus secara eksplisit menambahkannya ke organisasi seperti yang dijelaskan sebelumnya.
  • Anda tidak dapat mengubah nama tampilan atau avatar perwakilan layanan di Azure DevOps.
  • Perwakilan layanan dihitung sebagai lisensi untuk setiap organisasi tempatnya ditambahkan, bahkan jika penagihan multi-organisasi dipilih.

3. Akses sumber daya Azure DevOps dengan token ID Microsoft Entra

Mendapatkan token ID Microsoft Entra

Memperoleh token akses untuk identitas terkelola dapat dilakukan dengan mengikuti dokumentasi ID Microsoft Entra. Untuk informasi selengkapnya, lihat contoh untuk perwakilan layanan dan identitas terkelola.

Token akses yang dikembalikan adalah JWT dengan peran yang ditentukan, yang dapat digunakan untuk mengakses sumber daya organisasi menggunakan token sebagai Pembawa.

Menggunakan token ID Microsoft Entra untuk mengautentikasi ke sumber daya Azure DevOps

Dalam contoh video berikut, kami beralih dari mengautentikasi dengan PAT ke menggunakan token dari perwakilan layanan. Kita mulai dengan menggunakan rahasia klien untuk autentikasi, lalu beralih menggunakan sertifikat klien.

  • Meskipun perwakilan layanan dapat ditambahkan ke grup ID Microsoft Entra (dalam portal Azure), kami memiliki batasan teknis saat ini yang mencegah kami menampilkannya dalam daftar anggota grup ID Microsoft Entra. Batasan ini tidak berlaku untuk grup Azure DevOps. Meskipun demikian, perwakilan layanan masih mewarisi izin grup apa pun yang ditetapkan di atas grup ID Microsoft Entra tempat mereka berada.
  • Tidak semua pengguna dalam grup ID Microsoft Entra segera menjadi bagian dari organisasi Azure DevOps hanya karena admin membuat grup dan menambahkan grup ID Microsoft Entra ke dalamnya. Kami memiliki proses yang disebut "materialisasi" yang terjadi setelah pengguna dari grup ID Microsoft Entra masuk ke organisasi untuk pertama kalinya. Pengguna yang masuk ke organisasi memungkinkan kami menentukan pengguna mana yang harus diberikan lisensi. Karena rincian masuk tidak dimungkinkan untuk perwakilan layanan, admin harus secara eksplisit menambahkannya ke organisasi seperti yang dijelaskan sebelumnya.
  • Anda tidak dapat mengubah nama tampilan atau avatar perwakilan layanan di Azure DevOps.
  • Perwakilan layanan dihitung sebagai lisensi untuk setiap organisasi tempatnya ditambahkan, bahkan jika penagihan multi-organisasi dipilih.

Contoh lain menunjukkan cara menyambungkan ke Azure DevOps menggunakan Identitas Terkelola yang Ditetapkan Pengguna dalam Azure Function.

Ikuti contoh-contoh ini dengan menemukan kode aplikasi dalam koleksi aplikasi sampel kami.

Perwakilan layanan dapat digunakan untuk memanggil REST API Azure DevOps dan melakukan sebagian besar tindakan, tetapi dibatasi dari operasi berikut:

  • Perwakilan layanan tidak dapat menjadi pemilik organisasi atau membuat organisasi.
  • Perwakilan layanan tidak dapat membuat token, seperti token akses pribadi (PATs) atau Kunci SSH. Mereka dapat menghasilkan token ID Microsoft Entra mereka sendiri dan token ini dapat digunakan untuk memanggil REST API Azure DevOps.
  • Kami tidak mendukung Azure DevOps OAuth untuk perwakilan layanan.

Catatan

Anda hanya dapat menggunakan ID Aplikasi dan bukan URI Sumber Daya yang terkait dengan Azure DevOps untuk menghasilkan token.

Tanya Jawab Umum

Umum

T: Mengapa saya harus menggunakan perwakilan layanan atau identitas terkelola, bukan PAT?

A: Banyak pelanggan kami mencari perwakilan layanan atau identitas terkelola untuk menggantikan PAT (token akses pribadi) yang ada. PATs semacam itu sering milik akun layanan (akun tim bersama) yang menggunakannya untuk mengautentikasi aplikasi dengan sumber daya Azure DevOps. PATS harus sering diputar secara melelahkan (minimal 180 hari). Karena PAT hanyalah token pembawa, yang berarti string token yang mewakili nama pengguna dan kata sandi pengguna, mereka sangat berisiko untuk digunakan karena mereka dapat dengan mudah jatuh ke tangan orang yang salah. Token Microsoft Entra kedaluwarsa setiap jam dan harus diregenerasi dengan token refresh untuk mendapatkan token akses baru, yang membatasi faktor risiko keseluruhan saat bocor.

Anda tidak dapat menggunakan perwakilan layanan untuk membuat token akses pribadi.

T: Berapa batas tarif pada perwakilan layanan dan identitas terkelola?

A: Saat ini, perwakilan layanan dan identitas terkelola memiliki batas tarif yang sama dengan pengguna.

T: Apakah menggunakan fitur ini akan lebih mahal?

A: Perwakilan layanan dan identitas terkelola dihargai sama seperti pengguna, berdasarkan tingkat akses. Satu perubahan penting berkaitan dengan bagaimana kami memperlakukan "penagihan multi-org" untuk perwakilan layanan. Pengguna dihitung hanya sebagai satu lisensi, tidak peduli berapa banyak organisasi tempat mereka berada. Perwakilan layanan dihitung sebagai satu lisensi per setiap organisasi tempat pengguna berada. Skenario ini mirip dengan "penagihan berbasis penetapan pengguna" standar.

T: Dapatkah saya menggunakan perwakilan layanan atau identitas terkelola dengan Azure CLI?

J: Ya! Di mana saja yang meminta PAT di Azure CLI juga dapat menerima token akses ID Microsoft Entra. Lihat contoh-contoh ini tentang bagaimana Anda mungkin meneruskan token Microsoft Entra untuk mengautentikasi dengan CLI.

# To authenticate with a command: After typing this command, the az devops login will prompt you to enter a token. You can add an Entra ID token too! Not just a PAT.
az devops login

# To authenticate a service principal with a password or cert:
az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>

# To authenticate a managed identity:
az login --identity

Sekarang, mari kita dapatkan token Microsoft Entra (UUID sumber daya Azure DevOps adalah 499b84ac-1321-427f-aa17-267ca6975798) dan coba panggil API Azure DevOps dengan meneruskannya di header sebagai Bearer token:

Write-Host "Obtain access token for Service Connection identity..."
$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Write-Host "Use access token with Azure DevOps REST API to list projects in the organization..."
$apiVersion = "7.1-preview.1"
$uri = "https://dev.azure.com/${yourOrgname}/_apis/projects?api-version=${apiVersion}"
$headers = @{
    Accept = "application/json"
    Authorization = "Bearer $accessToken"
}
Invoke-RestMethod -Uri $uri -Headers $headers -Method Get | Select-Object -ExpandProperty value ` | Select-Object id, name

Sekarang, Anda dapat menggunakan az cli perintah per biasa.

T: Bisakah saya menambahkan identitas terkelola dari penyewa lain ke organisasi saya?

A: Anda hanya dapat menambahkan identitas terkelola dari penyewa yang sama dengan yang tersambung dengan organisasi Anda. Namun, kami memiliki solusi yang memungkinkan Anda menyiapkan identitas terkelola di "penyewa sumber daya", di mana semua sumber daya Anda berada. Kemudian, Anda dapat mengaktifkannya untuk digunakan oleh perwakilan layanan di "penyewa target", tempat organisasi Anda terhubung. Lakukan langkah-langkah berikut sebagai solusinya:

  1. Buat identitas terkelola yang ditetapkan pengguna di portal Azure untuk penyewa sumber daya Anda.
  2. Koneksi ke komputer virtual dan tetapkan identitas terkelola ini ke komputer virtual tersebut.
  3. Buat brankas kunci dan buat sertifikat (tidak boleh berjenis "PEM"). Ketika Anda membuat sertifikat ini, rahasia dengan nama yang sama juga dihasilkan, yang kami gunakan nanti.
  4. Berikan akses ke identitas terkelola sehingga dapat membaca kunci privat dari brankas kunci. Buat kebijakan akses di brankas kunci dengan izin "Dapatkan/Daftar" (di bawah "Izin rahasia" dan cari identitas terkelola di bagian "Pilih utama."
  5. Unduh sertifikat yang dibuat dalam format "CER", yang memastikan bahwa sertifikat tersebut tidak berisi bagian privat dari sertifikat Anda.
  6. Buat pendaftaran aplikasi baru di penyewa target.
  7. Unggah sertifikat yang diunduh ke aplikasi baru ini di tab "Sertifikat &rahasia".
  8. Tambahkan perwakilan layanan aplikasi ini ke organisasi Azure DevOps yang ingin kami akses, dan ingatlah untuk menyiapkan perwakilan layanan dengan izin yang diperlukan.
  9. Untuk mendapatkan token akses Microsoft Entra dari perwakilan layanan ini yang menggunakan sertifikat identitas terkelola, lihat sampel kode berikut:

Catatan

Anda harus memutar sertifikat secara teratur, seperti biasa.

public static async Task<string> GetSecret(string keyVaultName, string secretName)
{
	var keyVaultUri = new Uri("https://" + keyVaultName + ".vault.azure.net");
	var client = new SecretClient(keyVaultUri, new ManagedIdentityCredential());
	var keyVaultSecret = await client.GetSecretAsync(secretName);

	var secret = keyVaultSecret.Value;
	return secret.Value;
}

private static async Task<AuthenticationResult> GetAppRegistrationAADAccessToken(string applicationClientID, string appTenantId)
{
	IConfidentialClientApplication app;

	byte[] privateKeyBytes = Convert.FromBase64String(GetSecret(keyVaultName, secretName));
	X509Certificate2 certificateWithPrivateKey = new X509Certificate2(privateKeyBytes, (string)null, X509KeyStorageFlags.MachineKeySet);

	app = ConfidentialClientApplicationBuilder.Create(applicationClientID)
		.WithCertificate(certificateWithPrivateKey)
		.WithAuthority(new Uri(string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", appTenantId)))
		.Build();
	app.AddInMemoryTokenCache();

	string AdoAppClientID = "499b84ac-1321-427f-aa17-267ca6975798/.default";
	string[] scopes = new string[] { AdoAppClientID };

	var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();

	return result;
}

Artefak

T: Dapatkah saya menggunakan perwakilan layanan untuk menyambungkan ke umpan?

A: Ya, Anda dapat terhubung ke umpan Azure Artifacts apa pun dengan perwakilan layanan. Dalam contoh berikut, kami menunjukkan cara terhubung dengan token ID Microsoft Entra untuk NuGet, npm, dan Maven, tetapi jenis umpan lainnya juga harus berfungsi.

Penyiapan proyek NuGet dengan token Microsoft Entra
  1. Tambahkan file nuget.config ke proyek Anda, di folder yang sama dengan file .csproj atau .sln .

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <clear />
        <add key="FeedName" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
      </packageSources>
    </configuration>
    
  2. Dapatkan token ID Microsoft Entra untuk perwakilan layanan Anda.

  3. Jalankan perintah berikut untuk mengautentikasi dengan kredensial Anda lalu tambahkan token Anda menggunakan perintah setapikey. Perintah ini menambahkan sumber umpan Anda ke nuget.config Anda:

    nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <USERNAME> -password <PASSWORD>
    
    nuget setapikey <YOUR_ACCESS_TOKEN> -source <SOURCE_URL> 
    

penyiapan proyek npm dengan token Microsoft Entra

Catatan

Alat vsts-npm-auth tidak mendukung token akses Microsoft Entra.

  1. .npmrc Tambahkan ke proyek Anda, di direktori yang sama dengan .package.json

    registry=https://pkgs.dev.azure.com/Fabrikam/_packaging/FabrikamFeed/npm/registry/ 
    always-auth=true
    
  2. Dapatkan token akses untuk perwakilan layanan atau identitas terkelola Anda.

  3. Tambahkan kode ini ke Anda ${user.home}/.npmrc dan ganti tempat penampung [AAD_SERVICE_PRINCIPAL_ACCESS_TOKEN] dengan token akses dari langkah sebelumnya.

    //pkgs.dev.azure.com/Fabrikam/_packaging/FabrikamFeed/npm/:_authToken=[AAD_SERVICE_PRINCIPAL_ACCESS_TOKEN]
    

Penyiapan proyek Maven dengan token Microsoft Entra
  1. Tambahkan repositori ke bagian dan <distributionManagement> milik Anda.pom.xml<repositories>

    <repository>
      <id>Fabrikam</id>
      <url>https://pkgs.dev.azure.com/Fabrikam/_packaging/FabrikamFeed/maven/v1</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    
  2. Dapatkan token akses untuk Perwakilan Layanan atau Identitas Terkelola Anda.

  3. Tambahkan atau edit settings.xml file di ${user.home}/.m2 dan ganti tempat penampung [AAD_SERVICE_PRINCIPAL_ACCESS_TOKEN] dengan token akses dari langkah sebelumnya.

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                                  https://maven.apache.org/xsd/settings-1.0.0.xsd">
      <servers>
        <server>
          <id>Fabrikam</id>
          <username>Fabrikam</username>
          <password>[AAD_SERVICE_PRINCIPAL_ACCESS_TOKEN]</password>
        </server>
      </servers>
    </settings>
    

Marketplace

T: Dapatkah saya menggunakan perwakilan layanan untuk menerbitkan ekstensi ke Visual Studio Marketplace?

J: Ya. Lakukan langkah-langkah berikut.

  1. Tambahkan perwakilan layanan sebagai anggota ke akun penerbit. Anda bisa mendapatkan ID perwakilan layanan dari profilnya menggunakan Profil - Dapatkan. Kemudian, Anda dapat menambahkan perwakilan layanan sebagai anggota ke penerbit menggunakan ID dari langkah sebelumnya.

  2. Terbitkan ekstensi melalui TFX CLI menggunakan SP. Jalankan perintah TFX CLI berikut untuk menggunakan token akses SP:

tfx extension publish --publisher my-publisher --vsix my-publisher.my-extension-1.0.0.vsix --auth-type pat -t <AAD_ACCESS_TOKEN>

Pipelines

T: Dapatkah saya menggunakan identitas terkelola dalam koneksi layanan? Bagaimana cara lebih mudah memutar rahasia untuk perwakilan layanan dalam koneksi layanan saya? Dapatkah saya menghindari penyimpanan rahasia dalam koneksi layanan sama sekali?

Azure mendukung federasi identitas beban kerja menggunakan protokol Koneksi OpenID, yang memungkinkan kami membuat koneksi layanan bebas rahasia di Azure Pipelines yang didukung oleh perwakilan layanan atau identitas terkelola dengan kredensial federasi di ID Microsoft Entra. Sebagai bagian dari eksekusinya, alur dapat bertukar token internalnya sendiri dengan token Microsoft Entra, sehingga mendapatkan akses ke sumber daya Azure. Setelah diimplementasikan, mekanisme ini direkomendasikan dalam produk melalui jenis koneksi layanan Azure lainnya yang ada saat ini. Mekanisme ini juga dapat digunakan untuk menyiapkan penyebaran bebas rahasia dengan penyedia layanan lain yang mematuhi OIDC. Mekanisme ini dalam pratinjau.

Repos

T: Dapatkah saya menggunakan perwakilan layanan untuk melakukan operasi git, seperti mengkloning repositori?

A: Lihat contoh berikut tentang cara kami meneruskan token ID Microsoft Entra dari perwakilan layanan alih-alih PAT untuk mengkloning repo dalam skrip PowerShell.

$ServicePrincipalAadAccessToken = 'Entra ID access token of a service principal'
git -c http.extraheader="AUTHORIZATION: bearer $ServicePrincipalAadAccessToken" clone https://dev.azure.com/{yourOrgName}/{yourProjectName}/_git/{yourRepoName}

Tip

Agar token Anda lebih aman, gunakan manajer info masuk sehingga Anda tidak perlu memasukkan kredensial Anda setiap saat. Kami merekomendasikan Git Credential Manager, yang dapat menerima token Microsoft Entra (yaitu, token OAuth Identitas Microsoft) alih-alih PAT jika variabel lingkungan diubah.

Tips bermanfaat tentang cara mendapatkan token akses dari Azure CLI untuk memanggil pengambilan git:

  1. Buka konfigurasi Git repositori Anda:
git config -e
  1. Tambahkan baris berikut, di mana UUID sumber daya Azure DevOps adalah 499b84ac-1321-427f-aa17-267ca6975798:
[credential]
    helper = "!f() { test \"$1\" = get && echo \"password=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv)\"; }; f" 
  1. Uji bahwa ia berfungsi menggunakan:
GIT_TRACE=1 GCM_TRACE=1 GIT_CURL_VERBOSE=1 git fetch

Potensi kesalahan

Gagal membuat perwakilan layanan dengan ID objek '{provided objectId}'

Tidak ada perwakilan layanan dengan penyewa yang provided objectId tersambung ke organisasi Anda. Salah satu alasan umumnya adalah Anda meneruskan ID objek pendaftaran aplikasi, bukan ID objek dari perwakilan layanannya. Ingat, perwakilan layanan adalah objek yang mewakili aplikasi untuk penyewa tertentu, itu bukan aplikasi itu sendiri. service principal object ID dapat ditemukan di halaman "Aplikasi Perusahaan" penyewa Anda. Cari nama aplikasi dan pilih hasil "Aplikasi Perusahaan" yang kembali. Hasil ini adalah halaman aplikasi perwakilan layanan / perusahaan dan Anda dapat menggunakan ID Objek yang ditemukan di halaman ini untuk membuat perwakilan layanan di Azure DevOps.

Akses Ditolak: {ID of the caller identity} memerlukan izin berikut pada sumber daya Pengguna untuk melakukan tindakan ini: Tambahkan Pengguna

Kesalahan ini mungkin disebabkan oleh salah satu alasan berikut:

  • Anda bukan pemilik organisasi, administrator koleksi proyek, atau administrator proyek atau tim.
  • Anda adalah administrator proyek atau tim, tetapi kebijakan 'Izinkan administrator tim dan proyek untuk mengundang pengguna baru' dinonaktifkan.
  • Anda adalah administrator proyek atau tim yang dapat mengundang pengguna baru, tetapi Anda mencoba menetapkan lisensi saat mengundang pengguna baru. Administrator proyek atau tim tidak diizinkan untuk menetapkan lisensi untuk pengguna baru. Setiap pengguna baru yang diundang ditambahkan di tingkat akses default untuk pengguna baru. Hubungi PCA untuk mengubah tingkat akses lisensi.

API Daftar Grafik Azure DevOps mengembalikan daftar kosong, meskipun kita tahu ada perwakilan layanan dalam organisasi

API Daftar Grafik Azure DevOps mungkin mengembalikan daftar kosong, bahkan jika masih ada lebih banyak halaman pengguna yang akan dikembalikan. continuationToken Gunakan untuk melakukan iterasi melalui daftar, dan Anda akhirnya dapat menemukan halaman tempat perwakilan layanan dikembalikan. continuationToken Jika dikembalikan, itu berarti ada lebih banyak hasil yang tersedia melalui API. Meskipun kami memiliki rencana untuk meningkatkan logika ini, saat ini, ada kemungkinan bahwa hasil X pertama kembali kosong.

TF401444: Masuk setidaknya sekali sebagai {tenantId'tenantId\servicePrincipalObjectId'} di browser web untuk mengaktifkan akses ke layanan.

Jika perwakilan layanan tidak diundang ke organisasi, Anda mungkin menemukan kesalahan berikut. Pastikan bahwa perwakilan layanan ditambahkan ke organisasi yang sesuai dan memiliki semua izin yang diperlukan untuk mengakses sumber daya yang diperlukan.