Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
++
Pustaka identitas Azure menyediakan dukungan autentikasi berbasis token Microsoft Entra ID di seluruh Azure SDK. Ini menyediakan serangkaian TokenCredential implementasi yang dapat digunakan untuk membangun klien Azure SDK yang mendukung autentikasi token Microsoft Entra.
Pustaka ini mengikuti Panduan Desain Azure SDK untuk C++.
Kode sumber | Paket (vcpkg) | Dokumentasi | referensi APIDokumentasi | Sampel
Memulai Langkah Pertama
Prasyarat
- vcpkg untuk akuisisi paket dan manajemen dependensi
- CMake untuk build proyek
- langganan Azure
- Azure CLI juga dapat berguna untuk mengautentikasi di lingkungan pengembangan, membuat akun, dan mengelola peran akun.
Pasang paketnya
Cara term mudah untuk memperoleh C++ SDK adalah memanfaatkan manajer paket vcpkg dan CMake. Lihat bagian readme Azure SDK untuk C++ yang sesuai. Kita akan menggunakan vcpkg dalam mode manifes. Untuk memulai proyek vcpkg dalam mode manifes, gunakan perintah berikut di akar proyek Anda:
vcpkg new --application
Untuk menginstal paket Identitas Azure melalui vcpkg: Untuk menambahkan paket Identitas Azure ke vcpkg Anda, masukkan perintah berikut:
vcpkg add port azure-identity-cpp
Kemudian, tambahkan yang berikut ini di file CMake Anda:
find_package(azure-identity-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-identity)
Ingatlah untuk mengatur CMAKE_TOOLCHAIN_FILE ke jalur ke vcpkg.cmake salah satu dengan menambahkan yang berikut ini ke file Anda CMakeLists.txt sebelum pernyataan proyek Anda:
set(CMAKE_TOOLCHAIN_FILE "vcpkg-root/scripts/buildsystems/vcpkg.cmake")
Atau dengan menentukannya dalam perintah CMake Anda dengan -DCMAKE_TOOLCHAIN_FILE argumen .
Ada lebih dari satu cara untuk memperoleh dan menginstal pustaka ini. Lihat sampel kami tentang berbagai cara untuk menyiapkan proyek Azure C++ Anda.
Mengautentikasi klien
Saat men-debug dan menjalankan kode secara lokal, biasanya pengembang menggunakan akun mereka sendiri untuk mengautentikasi panggilan ke layanan Azure. Ada beberapa alat pengembang yang dapat digunakan untuk melakukan autentikasi ini di lingkungan pengembangan Anda.
Mengautentikasi melalui Azure CLI
Pengembang dapat menggunakan Azure CLI untuk mengautentikasi. Aplikasi yang menggunakan DefaultAzureCredential atau AzureCliCredential kemudian dapat menggunakan akun ini untuk mengautentikasi panggilan dalam aplikasinya saat berjalan secara lokal.
Untuk mengautentikasi dengan Azure CLI, pengguna dapat menjalankan perintah az login. Untuk pengguna yang berjalan pada sistem dengan browser web default, Azure CLI akan meluncurkan browser untuk mengautentikasi pengguna.
Konsep utama
Credentials
Kredensial adalah kelas yang berisi atau dapat memperoleh data yang diperlukan klien layanan untuk mengautentikasi permintaan. Klien layanan di seluruh Azure SDK menerima kredensial saat dibuat, dan klien layanan menggunakan kredensial tersebut untuk mengautentikasi permintaan ke layanan.
Pustaka Azure Identity berfokus pada autentikasi OAuth dengan ID Microsoft Entra, dan menawarkan berbagai kelas kredensial yang mampu memperoleh token Microsoft Entra untuk mengautentikasi permintaan layanan. Semua kelas kredensial di pustaka ini adalah implementasi TokenCredential kelas abstrak di azure-core, dan salah satunya dapat digunakan oleh untuk membangun klien layanan yang mampu mengautentikasi dengan TokenCredential.
Lihat Kelas Kredensial untuk daftar lengkap jenis kredensial yang tersedia.
DefaultAzureCredential
DefaultAzureCredential menyederhanakan autentikasi saat mengembangkan aplikasi yang disebarkan ke Azure dengan menggabungkan kredensial yang digunakan di lingkungan hosting Azure dengan kredensial yang digunakan dalam pengembangan lokal. Untuk informasi selengkapnya, lihat Gambaran umum DefaultAzureCredential.
Examples
Lihat sampel kode.
Kredensial Token Berantai
ChainedTokenCredential memungkinkan pengguna untuk menyiapkan alur autentikasi kustom yang terdiri dari beberapa kredensial.
Contoh di bawah ini menunjukkan penggunaan ChainedTokenCredential yang akan mencoba mengautentikasi menggunakan EnvironmentCredential, dan mundur untuk mengautentikasi menggunakan ManagedIdentityCredential.
// A configuration demonstrated below would authenticate using EnvironmentCredential if it is
// available, and if it is not available, would fall back to use AzureCliCredential, and then to
// ManagedIdentityCredential.
auto chainedTokenCredential = std::make_shared<Azure::Identity::ChainedTokenCredential>(
Azure::Identity::ChainedTokenCredential::Sources{
std::make_shared<Azure::Identity::EnvironmentCredential>(),
std::make_shared<Azure::Identity::AzureCliCredential>(),
std::make_shared<Azure::Identity::ManagedIdentityCredential>()});
Azure::Service::Client azureServiceClient("serviceUrl", chainedTokenCredential);
Dukungan Identitas Terkelola
Autentikasi identitas terkelola didukung melalui ManagedIdentityCredential untuk Layanan Azure berikut ini:
Tentukan identitas terkelola yang ditetapkan pengguna dengan ManagedIdentityCredential
Banyak host Azure memungkinkan penetapan identitas terkelola yang ditetapkan pengguna. Contoh berikut menunjukkan konfigurasi ManagedIdentityCredential untuk mengautentikasi identitas terkelola yang ditetapkan pengguna saat disebarkan ke host Azure. Kode sampel menggunakan kredensial untuk mengautentikasi BlobClient dari pustaka klien Azure::Storage::Blobs . Ini juga menunjukkan bagaimana Anda dapat menentukan identitas terkelola yang ditetapkan pengguna baik oleh ID klien, ID sumber daya, atau ID objek.
ID Pelanggan
Untuk menggunakan ID klien, buat ManagedIdentityId dengan ManagedIdentityIdKind::ClientId, atur sebagai IdentityId di ManagedIdentityCredentialOptions, dan teruskan ke ManagedIdentityCredential konstruktor. Contohnya:
// When deployed to an Azure host, ManagedIdentityCredential will authenticate the specified
// user-assigned managed identity.
std::string userAssignedClientId = "<your managed identity client ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedClientId(userAssignedClientId);
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
ID Sumber Daya
Demikian pula, untuk menggunakan ID sumber daya, buat ManagedIdentityId dengan ManagedIdentityIdKind::ResourceId, atur sebagai IdentityId di ManagedIdentityCredentialOptions, dan teruskan ke ManagedIdentityCredential konstruktor. ID sumber daya mengambil formulir /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Karena ID sumber daya dapat dibangun oleh konvensi, ID sumber daya dapat lebih nyaman ketika ada sejumlah besar identitas terkelola yang ditetapkan pengguna di lingkungan Anda. Contohnya:
std::string userAssignedResourceId = "/subscriptions/<your managed identity resource ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedResourceId(
Azure::Core::ResourceIdentifier(userAssignedResourceId));
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
ID Objek
Demikian pula, untuk menggunakan ID objek, buat ManagedIdentityId dengan ManagedIdentityIdKind::ObjectId, atur sebagai IdentityId di ManagedIdentityCredentialOptions, dan teruskan ke ManagedIdentityCredential konstruktor. Contohnya:
std::string userAssignedObjectId = "<your managed identity object ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedObjectId(userAssignedObjectId);
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
Tentukan identitas terkelola yang ditetapkan sistem dengan ManagedIdentityCredential
Anda dapat mengekspresikan niat Anda untuk menggunakan identitas terkelola yang ditetapkan sistem, secara eksplisit, dengan membuat ManagedIdentityId nilai DENGAN dan ID kosong, mengaturnya sebagai ManagedIdentityIdKind::SystemAssigned dalam IdentityId, dan meneruskannya ke ManagedIdentityCredentialOptions konstruktor.ManagedIdentityCredential Contohnya:
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::SystemAssigned();
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
Cara alternatif untuk menentukan identitas terkelola yang ditetapkan sistem, secara implisit, adalah dengan memanggil konstruktor default ManagedIdentityCredential . Contohnya:
auto credential = std::make_shared<ManagedIdentityCredential>();
auto blobClient = BlobClient(blobUrl, credential);
Variabel Lingkungan
DefaultAzureCredential dan EnvironmentCredential dapat dikonfigurasi dengan variabel lingkungan. Setiap jenis autentikasi memerlukan nilai untuk variabel tertentu:
Perwakilan layanan dengan rahasia
| Nama variabel | Nilai |
|---|---|
AZURE_TENANT_ID |
ID penyewa Microsoft Entra aplikasi |
AZURE_CLIENT_ID |
ID aplikasi Microsoft Entra |
AZURE_CLIENT_SECRET |
salah satu rahasia klien aplikasi |
AZURE_AUTHORITY_HOST |
(opsional) URL otoritas autentikasi |
Perwakilan layanan dengan sertifikat
| nama variabel | Nilai |
|---|---|
AZURE_CLIENT_ID |
ID aplikasi Microsoft Entra |
AZURE_TENANT_ID |
ID penyewa Microsoft Entra aplikasi |
AZURE_CLIENT_CERTIFICATE_PATH |
jalur ke file sertifikat yang dikodekan PFX atau PEM termasuk kunci privat |
AZURE_AUTHORITY_HOST |
(opsional) URL otoritas autentikasi |
Konfigurasi dicoba dalam urutan di atas. Misalnya, jika nilai untuk rahasia klien dan sertifikat keduanya ada, rahasia klien akan digunakan.
Kelas kredensial
Rantai kredensial
| Credential | Usage |
|---|---|
DefaultAzureCredential |
Memberikan pengalaman autentikasi yang disederhanakan untuk mulai mengembangkan aplikasi dengan cepat yang dijalankan di Azure. |
ChainedTokenCredential |
Memungkinkan pengguna menentukan alur autentikasi kustom yang menyusun beberapa kredensial. |
Mengautentikasi aplikasi yang dihosting Azure
| Credential | Usage |
|---|---|
ManagedIdentityCredential |
Mengautentikasi identitas terkelola sumber daya Azure. |
EnvironmentCredential |
Mengautentikasi perwakilan layanan atau pengguna melalui informasi kredensial yang ditentukan dalam variabel lingkungan. |
WorkloadIdentityCredential |
Mengautentikasi identitas beban kerja di Kubernetes. |
Mengautentikasi perwakilan layanan
| Credential | Usage |
|---|---|
AzurePipelinesCredential |
Mendukung ID Beban Kerja Microsoft Entra |
ClientAssertionCredential |
Mengautentikasi perwakilan layanan menggunakan pernyataan klien yang ditandatangani. |
ClientSecretCredential |
Mengautentikasi perwakilan layanan menggunakan rahasia. |
ClientCertificateCredential |
Mengautentikasi perwakilan layanan menggunakan sertifikat. |
Mengautentikasi melalui alat pengembangan
| Credential | Usage |
|---|---|
AzureCliCredential |
Mengautentikasi di lingkungan pengembangan dengan Azure CLI. |
Troubleshooting
-
Pesan log Azure Identity SDK berisi informasi disgnostik, dan dimulai dengan "
Identity:". - Kredensial menimbulkan pengecualian baik ketika gagal mengautentikasi atau tidak dapat menjalankan autentikasi. Ketika kredensial gagal diautentikasi, kredensial
AuthenticationExceptionakan dilemparkan. Pengecualian memilikiwhat()fungsi yang menyediakan informasi lebih lanjut tentang kegagalan.
Contributing
Untuk detail tentang berkontribusi pada repositori ini, lihat panduan berkontribusi.
Proyek ini menyambut kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi Perjanjian Lisensi Kontributor.
Saat Anda mengirimkan permintaan pull, cla-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repositori menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Kode Etik atau hubungi opencode@microsoft.com dengan pertanyaan atau komentar tambahan apa pun.
Tautan Bermanfaat Tambahan untuk Kontributor
Banyak orang di seluruh dunia telah membantu membuat proyek ini lebih baik. Anda akan ingin memeriksa:
- Apa saja masalah pertama yang baik untuk kontributor baru ke repositori?
- Cara membangun dan menguji perubahan Anda
- Bagaimana Anda dapat membuat perubahan terjadi!
- Tanya Jawab Umum (FAQ) dan Topik Konseptual di Wiki Azure SDK untuk C++.
Melaporkan masalah keamanan dan bug keamanan
Masalah keamanan dan bug harus dilaporkan secara privat, melalui email, ke Microsoft Security Response Center (MSRC) secure@microsoft.com. Anda akan menerima respons dalam waktu 24 jam. Jika karena alasan tertentu Anda tidak melakukannya, silakan tindak lanjuti melalui email untuk memastikan kami menerima pesan asli Anda. Informasi lebih lanjut, termasuk kunci MSRC PGP, dapat ditemukan di Security TechCenter.
Lisensi
Azure SDK untuk C++ dilisensikan di bawah lisensi MIT .