Mengautentikasi aplikasi C++ ke layanan Azure selama pengembangan lokal menggunakan akun pengembang

Selama pengembangan lokal, aplikasi perlu mengautentikasi ke Azure untuk menggunakan layanan Azure yang berbeda. Autentikasi secara lokal menggunakan salah satu pendekatan ini:

Artikel ini menjelaskan cara mengautentikasi menggunakan akun pengembang dengan alat yang didukung oleh pustaka Azure Identity. Di bagian depan, Anda mempelajari:

  • Cara menggunakan grup Microsoft Entra untuk mengelola izin secara efisien untuk beberapa akun pengembang.
  • Cara menetapkan peran untuk akun pengembang guna membatasi izin.
  • Cara login ke alat pengembangan lokal yang didukung.
  • Cara mengautentikasi menggunakan akun pengembang dari kode aplikasi Anda.

Alat pengembang yang didukung untuk autentikasi

Agar aplikasi dapat mengautentikasi ke Azure selama pengembangan lokal menggunakan kredensial Azure pengembang, pengembang harus masuk ke Azure menggunakan Azure CLI.

Pustaka Azure Identity dapat mendeteksi bahwa pengembang masuk dari alat. Pustaka kemudian dapat memperoleh token akses Microsoft Entra melalui alat untuk mengautentikasi aplikasi ke Azure sebagai pengguna yang masuk.

Pendekatan ini memanfaatkan akun Azure pengembang yang ada untuk menyederhanakan proses autentikasi. Namun, akun pengembang kemungkinan memiliki lebih banyak izin daripada yang diperlukan oleh aplikasi, sehingga melebihi izin yang digunakan oleh aplikasi saat produksi. Sebagai alternatif, Anda dapat membuat prinsipal layanan aplikasi untuk digunakan selama pengembangan lokal, yang dapat dibatasi agar hanya memiliki akses yang diperlukan oleh aplikasi.

Membuat grup Microsoft Entra untuk pengembangan lokal

Buat grup Microsoft Entra untuk merangkum peran (izin) yang dibutuhkan aplikasi dalam pengembangan lokal daripada menetapkan peran ke objek principal layanan individual. Pendekatan ini menawarkan keuntungan berikut:

  • Setiap pengembang memiliki peran yang sama yang ditetapkan di tingkat grup.
  • Jika peran baru diperlukan untuk aplikasi, peran tersebut hanya perlu ditambahkan ke grup untuk aplikasi.
  • Jika pengembang baru bergabung dengan tim, perwakilan layanan aplikasi baru dibuat untuk pengembang dan ditambahkan ke grup, memastikan pengembang memiliki izin yang tepat untuk mengerjakan aplikasi.
  1. Navigasi ke halaman gambaran umum ID Microsoft Entra di portal Microsoft Azure.

  2. Pilih Semua grup dari menu sebelah kiri.

  3. Pada halaman Grup , pilih Grup baru.

  4. Pada halaman Grup baru , isi bidang formulir berikut ini:

    • Jenis grup: Pilih Keamanan.
    • Nama grup: Masukkan nama untuk grup yang menyertakan referensi ke aplikasi atau nama lingkungan.
    • Deskripsi grup: Masukkan deskripsi yang menjelaskan tujuan grup.

    Cuplikan layar memperlihatkan cara membuat grup di portal Microsoft Azure.

  5. Pilih link Tidak ada anggota yang dipilih di bawah Anggota untuk menambahkan anggota ke grup.

  6. Di panel pop-up yang terbuka, cari prinsipal layanan yang Anda buat sebelumnya dan pilih dari hasil yang sudah difilter. Pilih tombol Pilih di bagian bawah panel untuk mengonfirmasi pilihan Anda.

  7. Pilih Buat di bagian bawah halaman Grup baru untuk membuat grup dan kembali ke halaman Semua grup . Jika Anda tidak melihat grup baru tercantum, tunggu sebentar dan refresh halaman.

Menetapkan peran ke grup

Selanjutnya, tentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan tetapkan peran tersebut ke grup Microsoft Entra yang Anda buat. Grup dapat diberi peranan di ruang lingkup sumber daya, grup sumber daya, atau langganan. Contoh ini menunjukkan cara menetapkan peran di cakupan grup sumber daya, karena sebagian besar aplikasi mengelompokkan semua sumber daya Azure mereka ke dalam satu grup sumber daya.

  1. Di portal Microsoft Azure, buka halaman Gambaran Umum grup sumber daya yang berisi aplikasi Anda.

  2. Pilih Kontrol akses (IAM) dari navigasi kiri.

  3. Pada halaman Kontrol akses (IAM), pilih + Tambahkan lalu pilih Tambahkan penetapan peran dari menu drop-down. Halaman Tambahkan penetapan peran menyediakan beberapa tab untuk mengonfigurasi dan menetapkan peran.

  4. Pada tab Peran , gunakan kotak pencarian untuk menemukan peran yang ingin Anda tetapkan. Pilih peran, lalu pilih Berikutnya.

  5. Pada tab Anggota :

    • Untuk Menetapkan akses ke nilai, pilih Pengguna, grup, atau perwakilan layanan .
    • Untuk nilai Anggota , pilih + Pilih anggota untuk membuka panel flyout Pilih anggota .
    • Cari grup Microsoft Entra yang Anda buat sebelumnya dan pilih dari hasil yang difilter. Pilih Pilih untuk memilih grup dan menutup panel flyout.
    • Pilih Tinjau + tetapkan di bawah tab Anggota.

    Cuplikan layar memperlihatkan cara menetapkan peran ke grup Microsoft Entra.

  6. Di tab Tinjau & Tetapkan, pilih Tinjau & Tetapkan di bagian bawah halaman.

Masuk ke Azure menggunakan alat pengembang

Masuk ke Azure menggunakan salah satu dari beberapa alat pengembang yang dapat digunakan untuk melakukan autentikasi di lingkungan pengembangan Anda. Akun yang Anda autentikasi juga harus ada di grup Microsoft Entra yang Anda buat dan konfigurasikan sebelumnya.

Azure CLI (antarmuka baris perintah Azure)

Pengembang dapat menggunakan Azure CLI untuk mengautentikasi. Aplikasi yang menggunakan DefaultAzureCredential atau AzureCliCredential kemudian dapat menggunakan akun ini untuk mengautentikasi permintaan aplikasi.

Untuk mengautentikasi dengan Azure CLI, jalankan perintah az login. Pada sistem dengan browser web default, Azure CLI meluncurkan browser untuk mengautentikasi pengguna.

az login

Untuk sistem tanpa browser web default, perintah az login menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat daripada meluncurkan browser dengan menentukan argumen --use-device-code.

az login --use-device-code

Mengautentikasi ke layanan Azure dari aplikasi Anda

Pustaka Azure Identity untuk C++ menyediakan berbagai kredensial yang disesuaikan untuk mendukung skenario yang berbeda dan alur autentikasi Microsoft Entra. Langkah-langkah di depan menunjukkan cara menggunakan DefaultAzureCredential saat bekerja dengan akun pengguna secara lokal.

Menerapkan kode

Kelas DefaultAzureCredential adalah urutan mekanisme yang diurutkan untuk mengautentikasi ke ID Microsoft Entra. Setiap mekanisme autentikasi adalah kelas yang berasal dari TokenCredential kelas dan dikenal sebagai kredensial. Dalam skenario ini, DefaultAzureCredential secara berurutan memeriksa untuk melihat apakah pengembang telah masuk ke Azure menggunakan Azure CLI. Jika pengembang masuk ke Azure CLI, kredensial yang digunakan untuk masuk ke alat ini digunakan oleh aplikasi untuk mengautentikasi ke Azure. Untuk informasi selengkapnya tentang menyesuaikan rantai kredensial, lihat Cara menyesuaikan DefaultAzureCredential.

  1. Tambahkan paket azure-identity-cpp ke aplikasi Anda menggunakan vcpkg.

    vcpkg add port azure-identity-cpp
    
  2. Tambahkan baris berikut dalam file CMake Anda:

    find_package(azure-identity-cpp CONFIG REQUIRED)
    target_link_libraries(<your project name> PRIVATE Azure::azure-identity)
    
  3. Untuk kode C++ apa pun yang membuat objek klien Azure SDK di aplikasi, Anda ingin:

    1. Sertakan azure/identity.hpp tajuk.

    2. Gunakan DefaultAzureCredential atau AzureCliCredential untuk membuat instans kredensial. Contohnya:

      • Untuk menggunakan DefaultAzureCredential, atur variabel AZURE_TOKEN_CREDENTIALS lingkungan ke dev yang menunjukkan aplikasi berjalan di lingkungan pengembangan. Untuk informasi selengkapnya, lihat Cara menyesuaikan DefaultAzureCredential.

        // Environment variable AZURE_TOKEN_CREDENTIALS=dev
        auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);
        
      • Atau gunakan AzureCliCredential untuk selalu menggunakan pengguna masuk Azure CLI untuk mengautentikasi.

        auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
        
    3. Teruskan instans DefaultAzureCredential atau AzureCliCredential ke konstruktor klien Azure SDK.

    Contoh langkah-langkah ini ditampilkan di segmen kode berikut. Contoh membuat klien Azure Storage Blob menggunakan DefaultAzureCredential untuk mengautentikasi ke Azure.

    #include <azure/identity.hpp>
    #include <azure/storage/blobs.hpp>
    #include <iostream>
    #include <memory>
    
    int main() {
        try {
            // DefaultAzureCredential supports dev, test, and prod environments.
            // See documentation for details on customizing the credential chain:
            // https://learn.microsoft.com/azure/developer/cpp/sdk/authentication/credential-chains#defaultazurecredential-overview
            // In production, it's better to use a specific credential type so authentication is more predictable and easier to debug.
            // Here DefaultAzureCredential is used for local development and environment variable AZURE_TOKEN_CREDENTIALS=dev
    
            auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);
    
            // Or use AzureCliCredential to always use the Azure CLI signed-in user to authenticate
            // auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
    
            // Create a client for the specified storage account
            std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/";
            Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential);
    
            // Get a reference to a container
            std::string containerName = "sample-container";
            auto containerClient = blobServiceClient.GetBlobContainerClient(containerName);
    
            // TODO: perform some action with the blob client
            // auto blobClient = containerClient.GetBlobClient("sample-blob");
            // auto downloadResult = blobClient.DownloadTo("path/to/local/file");
    
        } catch (const std::exception& ex) {
            std::cout << "Exception: " << ex.what() << std::endl;
            return 1;
        }
    
        return 0;
    }