Mengautentikasi aplikasi NET ke layanan Azure selama pengembangan lokal menggunakan perwakilan layanan
Saat membuat aplikasi cloud, pengembang perlu men-debug dan menguji aplikasi di stasiun kerja lokal mereka. Saat aplikasi dijalankan di stasiun kerja pengembang selama pengembangan lokal, aplikasi masih harus mengautentikasi ke setiap layanan Azure yang digunakan oleh aplikasi. Artikel ini membahas cara menyiapkan objek perwakilan layanan aplikasi khusus yang akan digunakan selama pengembangan lokal.
Perwakilan layanan aplikasi khusus untuk pengembangan lokal memungkinkan Anda untuk mengikuti prinsip hak istimewa paling sedikit selama pengembangan aplikasi. Karena izin dilingkup ke apa saja yang diperlukan untuk aplikasi selama pengembangan, kode aplikasi dicegah untuk mengakses sumber daya Azure secara tidak sengaja yang dimaksudkan untuk digunakan oleh aplikasi yang berbeda. Hal ini juga mencegah bug terjadi ketika aplikasi dipindahkan ke produksi karena aplikasi memiliki hak istimewa berlebihan di lingkungan pengembangan.
Perwakilan layanan aplikasi disiapkan untuk aplikasi saat aplikasi terdaftar di Azure. Saat mendaftarkan aplikasi untuk pengembangan lokal, disarankan untuk:
- Membuat pendaftaran aplikasi terpisah untuk setiap pengembang yang bekerja di aplikasi. Hal ini akan membuat perwakilan layanan aplikasi terpisah untuk digunakan setiap pengembang selama pengembangan lokal dan menghindari kebutuhan pengembang untuk berbagi mandat untuk satu perwakilan layanan aplikasi.
- Membuat pendaftaran aplikasi terpisah per aplikasi. Hal ini mencakup izin aplikasi hanya untuk apa yang diperlukan oleh aplikasi.
Selama pengembangan lokal, variabel lingkungan diatur dengan identitas perwakilan layanan aplikasi. Azure SDK for NET membaca variabel lingkungan ini dan menggunakan informasi ini untuk mengautentikasi aplikasi ke sumber daya Azure yang dibutuhkannya.
1 - Mendaftarkan aplikasi di Azure
Objek perwakilan layanan aplikasi dibuat dengan pendaftaran aplikasi di Azure. Anda dapat menggunakan portal Azure atau Azure CLI.
Masuk ke portal Azure dan ikuti langkah-langkah berikut.
2 - Membuat kelompok keamanan Azure AD untuk pengembangan lokal
Karena biasanya ada beberapa pengembang yang mengerjakan aplikasi, disarankan untuk membuat grup Azure AD untuk merangkum peran (izin) yang dibutuhkan aplikasi dalam pengembangan lokal daripada menetapkan peran ke objek perwakilan layanan individual. Ini menawarkan keuntungan berikut.
- Setiap pengembang diyakinkan untuk memiliki peran yang sama yang ditetapkan karena peran ditetapkan di tingkat grup.
- Jika peran baru diperlukan untuk aplikasi, peran tersebut hanya perlu ditambahkan ke grup Azure AD 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 bekerja di aplikasi.
3 - Menetapkan peran ke aplikasi
Selanjutnya, Anda perlu menentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan menetapkan peran tersebut ke aplikasi Anda. Dalam contoh ini, peran akan ditetapkan ke grup Azure Active Directory yang dibuat di langkah 2. Peran dapat diberi peran di sumber daya, grup sumber daya, atau cakupan langganan. Contoh ini akan 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.
4 - Mengatur variabel lingkungan aplikasi
Objek DefaultAzureCredential
akan mencari informasi perwakilan layanan dalam sekumpulan variabel lingkungan saat runtime. Ada beberapa cara untuk mengonfigurasi variabel lingkungan saat bekerja dengan .NET tergantung pada alat dan lingkungan Anda.
Terlepas dari pendekatan mana yang Anda pilih, Anda harus mengonfigurasi variabel lingkungan berikut saat bekerja dengan perwakilan layanan.
AZURE_CLIENT_ID
→ Nilai ID aplikasi.AZURE_TENANT_ID
→ Nilai ID penyewa.AZURE_CLIENT_SECRET
→ Kata sandi/mandat yang dihasilkan untuk aplikasi.
Saat bekerja secara lokal dengan Visual Studio, variabel lingkungan dapat diatur dalam file launchsettings.json
di folder Properties
proyek Anda. Saat aplikasi dimulai, nilai-nilai ini akan ditarik secara otomatis. Perlu diingat konfigurasi ini tidak melakukan perjalanan dengan aplikasi Anda saat disebarkan, jadi Anda masih perlu menyiapkan variabel lingkungan pada lingkungan hosting target Anda.
"profiles": {
"SampleProject": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7177;http://localhost:5177",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"AZURE_TENANT_ID":"11111111-1111-1111-1111-111111111111",
"AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"AZURE_TENANT_ID": "11111111-1111-1111-1111-111111111111",
"AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
}
}
}
5 - Menerapkan DefaultAzureCredential di aplikasi Anda
DefaultAzureCredential
mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang digunakan saat runtime bahasa umum. Dengan cara ini, aplikasi Anda dapat menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda tanpa menerapkan kode khusus lingkungan.
Urutan dan lokasi di mana DefaultAzureCredential
mencari kredensial ditemukan di DefaultAzureCredential.
Untuk mengimplementasikan DefaultAzureCredential
, pertama-tama tambahkan Azure.Identity
dan paket Microsoft.Extensions.Azure
secara opsional ke aplikasi Anda. Anda dapat melakukan ini menggunakan baris perintah atau Manajer Paket NuGet.
Buka lingkungan terminal pilihan Anda di direktori proyek aplikasi dan masukkan perintah di bawah ini.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Layanan Azure umumnya diakses menggunakan kelas klien yang sesuai dari SDK. Kelas dan layanan kustom Anda sendiri harus terdaftar dalam file Program.cs
sehingga dapat diakses melalui injeksi dependensi di seluruh aplikasi Anda. Di dalam Program.cs
, ikuti langkah-langkah di bawah ini untuk menyiapkan dengan benar layanan Anda dan DefaultAzureCredential
.
- Sertakan namespace layanan
Azure.Identity
danMicrosoft.Extensions.Azure
dengan pernyataan penggunaan. - Daftarkan layanan Azure menggunakan metode pembantu yang relevan.
- Teruskan instans
DefaultAzureCredential
objek keUseCredential
metode .
Contoh ini ditampilkan di segmen kode berikut.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
Atau, Anda juga dapat menggunakan DefaultAzureCredential
layanan Anda secara lebih langsung tanpa bantuan metode pendaftaran Azure tambahan, seperti yang terlihat di bawah ini.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Ketika kode di atas dijalankan di stasiun kerja lokal Anda selama pengembangan lokal, kode tersebut akan melihat variabel lingkungan untuk perwakilan layanan aplikasi atau di Visual Studio, VS Code, Azure CLI, atau Azure PowerShell untuk serangkaian kredensial pengembang, yang salah satunya dapat digunakan untuk mengautentikasi aplikasi ke sumber daya Azure selama pengembangan lokal.
Saat disebarkan ke Azure, kode yang sama ini juga dapat mengautentikasi aplikasi Anda ke sumber daya Azure lainnya. DefaultAzureCredential
dapat mengambil pengaturan lingkungan dan konfigurasi identitas terkelola untuk mengautentikasi ke layanan lain secara otomatis.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk