Mengautentikasi ke sumber daya Azure dari aplikasi .NET yang dihosting secara lokal
Aplikasi yang dihosting di luar Azure (misalnya lokal atau di pusat data pihak ketiga) harus menggunakan perwakilan layanan aplikasi untuk mengautentikasi ke Azure saat mengakses sumber daya Azure. Objek perwakilan layanan aplikasi dibuat menggunakan proses pendaftaran aplikasi di Azure. Saat perwakilan layanan aplikasi dibuat, ID klien dan rahasia klien akan dibuat untuk aplikasi Anda. ID klien, rahasia klien, dan ID penyewa Anda kemudian disimpan dalam variabel lingkungan sehingga dapat digunakan oleh Azure SDK untuk .NET untuk mengautentikasi aplikasi Anda ke Azure saat runtime.
Pendaftaran aplikasi yang berbeda harus dibuat untuk setiap lingkungan tempat aplikasi dihosting. Ini memungkinkan izin sumber daya khusus lingkungan dikonfigurasi untuk setiap perwakilan layanan dan memastikan aplikasi yang disebarkan ke satu lingkungan tidak berbicara dengan sumber daya Azure yang merupakan bagian dari lingkungan lain.
1 - Mendaftarkan aplikasi di Azure
Aplikasi dapat didaftarkan dengan Azure menggunakan portal Microsoft Azure atau Azure CLI.
Masuk ke portal Azure dan ikuti langkah-langkah berikut.
2 - Menetapkan peran ke perwakilan layanan aplikasi
Selanjutnya, Anda perlu menentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan menetapkan peran tersebut ke aplikasi Anda. 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.
3 - Mengonfigurasi variabel lingkungan untuk aplikasi
Objek DefaultAzureCredential
akan mencari mandat perwakilan layanan dalam himpunan variabel lingkungan saat runtime bahasa umum. 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.
Jika aplikasi Anda dihosting di IIS, disarankan agar Anda mengatur variabel lingkungan per kumpulan aplikasi untuk mengisolasi pengaturan antar aplikasi.
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='ASPNETCORE_ENVIRONMENT',value='Production']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_ID',value='00000000-0000-0000-0000-000000000000']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_TENANT_ID',value='11111111-1111-1111-1111-111111111111']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_SECRET',value='=abcdefghijklmnopqrstuvwxyz']" /commit:apphost
Anda juga dapat mengonfigurasi pengaturan ini secara langsung menggunakan elemen applicationPools
di dalam file applicationHost.config
.
<applicationPools>
<add name="CorePool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic">
<environmentVariables>
<add name="ASPNETCORE_ENVIRONMENT" value="Development" />
<add name="AZURE_CLIENT_ID" value="00000000-0000-0000-0000-000000000000" />
<add name="AZURE_TENANT_ID" value="11111111-1111-1111-1111-111111111111" />
<add name="AZURE_CLIENT_SECRET" value="=abcdefghijklmnopqrstuvwxyz" />
</environmentVariables>
</add>
</applicationPools>
4 - 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