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.
Berlaku untuk: Penyewa tenaga kerja
Penyewa eksternal
(pelajari selengkapnya)
Tutorial ini adalah bagian akhir dari seri yang menunjukkan pembangunan dan pengujian API web yang dilindungi yang terdaftar di penyewa Microsoft Entra. Di Bagian 1 dari seri ini, Anda membuat API web ASP.NET Core dan melindungi endpoint-nya. Sekarang Anda akan membuat aplikasi daemon ringan, mendaftarkannya di penyewa Anda, dan menggunakan aplikasi daemon untuk menguji API web yang Anda buat.
Di tutorial ini, Anda akan:
- Mendaftarkan aplikasi daemon
- Menetapkan peran aplikasi ke aplikasi daemon Anda
- Membangun aplikasi daemon Anda
- Jalankan aplikasi daemon Anda untuk memanggil API web yang dilindungi
Prasyarat
- Jika Anda belum melakukannya, selesaikan Tutorial: Membangun dan melindungi API web ASP.NET Core dengan platform identitas Microsoft
Mendaftarkan aplikasi daemon
Langkah-langkah berikut menunjukkan cara mendaftarkan aplikasi daemon Anda di pusat admin Microsoft Entra:
Masuk ke pusat admin Microsoft Entra setidaknya sebagai Pengembang Aplikasi.
Jika Anda memiliki akses ke beberapa tenant, gunakan ikon Pengaturan
di menu atas untuk beralih ke tenant eksternal Anda dari menu Direktori + langganan .Telusuri ke Entra ID>Pendaftaran Aplikasi.
Pilih + Pendaftaran baru.
Di halaman Daftarkan aplikasi yang muncul, masukkan informasi pendaftaran aplikasi Anda:
Di bagian Nama , masukkan nama aplikasi yang bermakna yang akan ditampilkan kepada pengguna aplikasi, misalnya ciam-client-app.
Di bawah Jenis akun yang didukung, pilih Akun di direktori organisasi ini saja.
Pilih Daftar.
Panel Gambaran Umum aplikasi ditampilkan saat pendaftaran selesai. Rekam ID Direktori (penyewa) dan ID Aplikasi (klien) yang akan digunakan dalam kode sumber aplikasi Anda.
Buat rahasia klien untuk aplikasi terdaftar. Aplikasi ini menggunakan rahasia klien untuk membuktikan identitasnya ketika meminta token:
- Dari halaman Pendaftaran aplikasi , pilih aplikasi yang Anda buat (seperti rahasia klien aplikasi web) untuk membuka halaman Gambaran Umumnya .
- Di bawah Kelola, pilih Sertifikat & rahasia>Klien Rahasia>klien baru.
- Dalam kotak Deskripsi , masukkan deskripsi untuk rahasia klien (misalnya, rahasia klien aplikasi web).
- Di bawah Kedaluwarsa, pilih durasi yang rahasianya valid (sesuai aturan keamanan organisasi Anda), lalu pilih Tambahkan.
- Catat Nilai rahasia. Anda menggunakan nilai ini untuk konfigurasi di langkah selanjutnya. Nilai rahasia tidak akan ditampilkan lagi, dan tidak dapat diambil dengan metode apa pun, setelah Anda berpindah dari Sertifikat dan rahasia. Pastikan Anda merekamnya.
Menetapkan peran aplikasi ke aplikasi daemon Anda
Aplikasi yang mengautentikasi sendiri tanpa pengguna memerlukan izin aplikasi (juga dikenal sebagai peran). Izin ini memungkinkan aplikasi itu sendiri untuk mengakses sumber daya secara langsung. Di sisi lain, jika kami menguji API dengan pengguna yang masuk, kami akan menetapkan izin (cakupan) yang didelegasikan. Izin yang didelegasikan memungkinkan aplikasi bertindak atas nama pengguna, terbatas pada hak akses pengguna. Ikuti langkah-langkah ini untuk menetapkan izin aplikasi ke aplikasi daemon:
Dari halaman Pendaftaran aplikasi , pilih aplikasi yang Anda buat, seperti ciam-client-app.
Di bawah Kelola, pilih Izin API.
Di bawah Izin yang dikonfigurasi, pilih Tambahkan izin.
Pilih tab API yang digunakan organisasi saya .
Dalam daftar API, pilih API seperti ciam-ToDoList-api.
Pilih opsi Izin aplikasi . Kami memilih opsi ini karena aplikasi masuk dengan identitasnya sendiri, namun bukan atas nama pengguna.
Dari daftar izin, pilih TodoList.Read.All, ToDoList.ReadWrite.All (gunakan kotak pencarian jika perlu).
Pilih tombol Tambahkan izin .
Pada titik ini, Anda telah menetapkan izin dengan benar. Namun, karena aplikasi daemon tidak mengizinkan pengguna untuk berinteraksi dengannya, pengguna itu sendiri tidak dapat menyetujui izin ini. Untuk mengatasi masalah ini, Anda sebagai admin harus menyetujui izin ini atas nama semua pengguna di penyewa:
- Pilih Berikan persetujuan admin untuk <nama> penyewa Anda, lalu pilih Ya.
- Pilih Refresh, lalu verifikasi bahwa Telah diberikan untuk <nama penyewa Anda> muncul di bawah Status untuk kedua hak akses.
Membuat aplikasi daemon
Inisialisasi aplikasi konsol .NET dan navigasikan ke folder akarnya:
dotnet new console -o MyTestApp cd MyTestAppInstal MSAL.NET untuk membantu menangani autentikasi dengan menjalankan perintah berikut:
dotnet add package Microsoft.Identity.ClientJalankan proyek API Anda dan catat port tempat proyek berjalan.
Buka file Program.cs dan ganti kode "Halo dunia" dengan kode berikut.
using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist); Console.WriteLine("Your response is: " + response.StatusCode);Navigasi ke direktori akar aplikasi daemon dan jalankan aplikasi menggunakan perintah
dotnet run. Kode ini mengirim permintaan tanpa token akses. Anda akan melihat string berikut: Respon Anda adalah: Tidak Sah tercetak di konsol Anda.Hapus kode di langkah 4 dan ganti dengan yang berikut ini untuk menguji API Anda dengan mengirim permintaan dengan token akses yang valid. Aplikasi daemon ini menggunakan alur kredensial klien untuk memperoleh token akses saat diautentikasi tanpa interaksi pengguna.
using Microsoft.Identity.Client; using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var clientId = "<your-daemon-app-client-id>"; var clientSecret = "<your-daemon-app-secret>"; var scopes = new[] {"api://<your-web-api-application-id>/.default"}; var tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync(); Console.WriteLine($"Access Token: {result.AccessToken}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);Ganti placeholder dalam kode dengan ID klien aplikasi daemon, rahasia, ID aplikasi API web, dan nama tenant Anda.
- Untuk penyewa eksternal, gunakan otoritas dalam formulir:
"https://{tenantName}.ciamlogin.com/" - Untuk penyewa pekerja, gunakan wewenang dalam bentuk:
"https://login.microsoftonline.com/{tenantId}"
- Untuk penyewa eksternal, gunakan otoritas dalam formulir:
Navigasi ke direktori akar aplikasi daemon dan jalankan aplikasi menggunakan perintah
dotnet run. Kode ini mengirimkan permintaan dengan token akses yang valid. Anda akan melihat string: Respons Anda adalah: OK dicetak di konsol Anda.