Bagikan melalui


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 pustaka Identitas Azure 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.

Petunjuk Cuplikan layar
Di portal Azure:
  1. Masukkan pendaftaran aplikasi di bilah pencarian di bagian atas portal Azure.
  2. Pilih item berlabel Pendaftaran aplikasi pada judul Layanan pada menu yang muncul di bawah bilah pencarian.
Cuplikan layar memperlihatkan cara menggunakan bilah pencarian atas di portal Azure untuk menemukan dan menavigasi ke halaman Pendaftaran aplikasi.
Pada halaman Pendaftaran aplikasi, pilih + Pendaftaran baru. Cuplikan layar memperlihatkan lokasi tombol Pendaftaran baru di halaman Pendaftaran aplikasi.
Pada halaman Daftarkan aplikasi , isi formulir sebagai berikut:
  1. Nama → Masukkan nama untuk pendaftaran aplikasi di Azure. Disarankan nama ini mencakup nama aplikasi dan lingkungan (pengujian, prod) untuk pendaftaran aplikasi.
  2. Jenis akun yang didukungHanya akun dalam direktori organisasi ini.
Pilih Daftar untuk mendaftarkan aplikasi Anda dan membuat perwakilan layanan aplikasi.
Cuplikan layar memperlihatkan cara mengisi halaman Daftarkan aplikasi dengan memberi aplikasi nama dan menentukan jenis akun yang didukung sebagai akun di direktori organisasi ini saja.
Pada halaman Pendaftaran aplikasi untuk aplikasi Anda:
  1. ID Aplikasi (klien) → Ini adalah id aplikasi yang akan digunakan aplikasi untuk mengakses Azure selama pengembangan lokal. Salin nilai ini ke lokasi sementara di editor teks karena Anda akan membutuhkannya di langkah mendatang.
  2. Id direktori (penyewa) → Nilai ini juga akan diperlukan oleh aplikasi Anda saat mengautentikasi ke Azure. Salin nilai ini ke lokasi sementara di editor teks. Nilai ini juga akan dibutuhkan di langkah mendatang.
  3. Mandat klien → Anda harus mengatur mandat klien untuk aplikasi sebelum aplikasi Anda dapat mengautentikasi ke Azure dan menggunakan layanan Azure. Pilih Tambahkan sertifikat atau rahasia untuk menambahkan mandat untuk aplikasi Anda.
Cuplikan layar halaman Pendaftaran aplikasi setelah pendaftaran aplikasi selesai. Cuplikan layar ini menunjukkan lokasi ID aplikasi dan ID penyewa yang akan diperlukan di langkah mendatang. Ini juga menunjukkan lokasi tautan yang akan digunakan untuk menambahkan rahasia aplikasi untuk aplikasi.
Pada halaman Sertifikat & rahasia , pilih + Rahasia klien baru. Cuplikan layar memperlihatkan lokasi tautan yang akan digunakan untuk membuat rahasia klien baru di halaman sertifikat dan rahasia.
Dialog Tambahkan rahasia klien akan muncul dari sisi kanan halaman. Dalam dialog ini:
  1. Deskripsi → Masukkan nilai Saat Ini.
  2. Kedaluwarsa → Pilih nilai 24 bulan.
Pilih Buat untuk menambahkan rahasia.

PENTING: Atur pengingat di kalender Anda sebelum tanggal kedaluwarsa rahasia. Dengan cara ini, Anda dapat menambahkan rahasia baru sebelum dan memperbarui aplikasi sebelum kedaluwarsa rahasia ini dan menghindari gangguan layanan di aplikasi Anda.
Cuplikan layar yang menunjukkan halaman tempat rahasia klien baru ditambahkan untuk perwakilan layanan aplikasi yang dibuat oleh proses pendaftaran aplikasi.
Pada halaman Sertifikat & rahasia , Anda akan ditampilkan nilai rahasia klien.

Salin nilai ini ke lokasi sementara di editor teks, karena Anda akan membutuhkannya di langkah mendatang.

PENTING: Ini adalah satu-satunya waktu Anda akan melihat nilai ini. Setelah Keluar atau menyegarkan halaman ini, Anda tidak akan dapat melihat nilai ini lagi. Anda dapat menambahkan rahasia klien tambahan tanpa membatalkan rahasia klien ini, tetapi Anda tidak akan melihat nilai ini lagi.
Cuplikan layar memperlihatkan halaman dengan rahasia klien yang dihasilkan.

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 menunjukkan cara menetapkan peran untuk perwakilan layanan di cakupan grup sumber daya, karena sebagian besar aplikasi mengelompokkan semua sumber daya Azure mereka ke dalam satu grup sumber daya.

Petunjuk Cuplikan layar
Temukan grup sumber daya untuk aplikasi Anda dengan mencari nama grup sumber daya menggunakan kotak pencarian di bagian atas portal Azure.

Navigasi ke grup sumber daya Anda dengan memilih nama grup sumber daya di bawah judul Grup Sumber Daya dalam kotak dialog.
Cuplikan layar memperlihatkan cara menggunakan kotak pencarian teratas di portal Azure untuk menemukan dan menavigasi ke grup sumber daya yang ingin Anda tetapkan perannya (izin).
Pada halaman untuk grup sumber daya, pilih Kontrol akses (IAM) dari menu sebelah kiri. Cuplikan layar halaman grup sumber daya memperlihatkan lokasi item menu Kontrol akses (IAM).
Pada halaman Kontrol akses (IAM):
  1. Pilih tab Penetapan peran.
  2. Pilih + Tambahkan dari menu atas lalu Tambahkan penetapan peran dari menu drop-down yang dihasilkan.
Cuplikan layar memperlihatkan cara menavigasi ke tab penetapan peran dan lokasi tombol yang digunakan untuk menambahkan penetapan peran ke grup sumber daya.
Halaman Tambahkan penetapan peran mencantumkan semua peran yang dapat ditetapkan untuk grup sumber daya.
  1. Gunakan kotak pencarian untuk memfilter daftar ke ukuran yang lebih mudah dikelola. Contoh ini menunjukkan cara memfilter peran Blob Penyimpanan.
  2. Pilih peran yang ingin ditetapkan.
Pilih Berikutnya untuk masuk ke layar berikutnya.
Cuplikan layar memperlihatkan cara memfilter dan memilih penetapan peran yang akan ditambahkan ke grup sumber daya.
Halaman Tambahkan penetapan peran berikutnya memungkinkan Anda menentukan pengguna yang akan ditetapkan perannya.
  1. Pilih Pengguna, grup, atau perwakilan layanan di bawah Tetapkan akses ke.
  2. Pilih + Pilih anggota di bawah Anggota.
Kotak dialog akan terbuka di sisi kanan portal Microsoft Azure.
Cuplikan layar memperlihatkan tombol radio untuk memilih untuk menetapkan peran ke grup Microsoft Entra dan tautan yang digunakan untuk memilih grup yang akan ditetapkan perannya.
Dalam dialog Pilih anggota:
  1. Kotak teks Pilih dapat digunakan untuk memfilter daftar pengguna dan grup di langganan Anda. Jika diperlukan, ketik beberapa karakter pertama dari perwakilan layanan yang Anda buat untuk aplikasi guna memfilter daftar.
  2. Pilih perwakilan layanan yang terkait dengan aplikasi Anda.
Pilih Pilih di bagian bawah dialog untuk melanjutkan.
Cuplikan layar memperlihatkan cara memfilter dan memilih grup Microsoft Entra untuk aplikasi dalam kotak dialog Pilih anggota.
Perwakilan layanan sekarang akan ditampilkan seperti yang dipilih di layar Tambahkan penetapan peran.

Pilih Tinjau + tetapkan untuk masuk ke halaman akhir lalu Tinjau + tetapkan lagi untuk menyelesaikan proses.
Cuplikan layar memperlihatkan halaman Tambahkan penetapan peran yang telah selesai dan lokasi tombol Tinjau + tetapkan yang digunakan untuk menyelesaikan proses.

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, konfigurasikan 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 di applicationPools dalam applicationHost.config file:

<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 adalah urutan mekanisme yang diurutkan dan diurutkan untuk mengautentikasi ke Microsoft Entra. Setiap mekanisme autentikasi adalah kelas yang berasal dari kelas TokenCredential dan dikenal sebagai kredensial. Pada runtime, DefaultAzureCredential upaya untuk mengautentikasi menggunakan kredensial pertama. Jika kredensial tersebut gagal memperoleh token akses, kredensial berikutnya dalam urutan dicoba, dan sebagainya, hingga token akses berhasil diperoleh. Dengan cara ini, aplikasi Anda dapat menggunakan kredensial yang berbeda di lingkungan yang berbeda tanpa menulis kode khusus lingkungan.

Urutan dan lokasi di mana DefaultAzureCredential mencari kredensial ditemukan di DefaultAzureCredential.

Untuk menggunakan DefaultAzureCredential, tambahkan Azure.Identity dan secara opsional paket Microsoft.Extensions.Azure ke aplikasi Anda:

Di terminal pilihan Anda, navigasikan ke direktori proyek aplikasi dan jalankan perintah berikut:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Layanan Azure diakses menggunakan kelas klien khusus dari berbagai pustaka klien Azure SDK. Kelas-kelas ini dan layanan kustom Anda sendiri harus didaftarkan sehingga dapat diakses melalui injeksi dependensi di seluruh aplikasi Anda. Di Program.cs, selesaikan langkah-langkah berikut untuk mendaftarkan kelas klien dan DefaultAzureCredential:

  1. Sertakan Azure.Identity namespace layanan dan Microsoft.Extensions.Azure melalui using arahan.
  2. Daftarkan klien layanan Azure menggunakan metode ekstensi -awalan Addyang sesuai.
  3. Teruskan instans DefaultAzureCredential ke UseCredential metode .

Contohnya:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Alternatifnya UseCredential adalah membuat instans DefaultAzureCredential secara langsung:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Saat kode sebelumnya berjalan di stasiun kerja pengembangan lokal Anda, kode tersebut akan melihat variabel lingkungan untuk perwakilan layanan aplikasi atau di alat pengembang yang diinstal secara lokal, seperti Visual Studio, untuk serangkaian kredensial pengembang. Salah satu pendekatan 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.