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)
Dalam panduan cepat ini, Anda menggunakan contoh aplikasi daemon untuk memperoleh token akses dan memanggil API web terproteksi dengan menggunakan Microsoft Authentication Library (MSAL).
Sebelum memulai, gunakan selektor Pilih jenis penyewa di bagian atas halaman ini untuk memilih jenis penyewa. Microsoft Entra ID menyediakan dua konfigurasi penyewa, tenaga kerja dan eksternal. Konfigurasi pengelolaan tenaga kerja adalah untuk karyawan, aplikasi internal, dan sumber daya organisasi lainnya. Penyewa eksternal adalah untuk aplikasi yang berinteraksi dengan pelanggan Anda.
Aplikasi sampel yang Anda gunakan dalam panduan cepat ini memperoleh token akses untuk memanggil Microsoft Graph API.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda belum memilikinya, Buat akun secara gratis.
- Akun Azure ini harus memiliki izin untuk mengelola aplikasi. Salah satu peran Microsoft Entra berikut ini menyertakan izin yang diperlukan:
- Administrator Aplikasi
- Pengembang Aplikasi
- Administrator Aplikasi Cloud
- Penyewa dari kalangan tenaga kerja. Anda dapat menggunakan Direktori Default Anda atau menyiapkan tenant baru.
- Daftarkan aplikasi baru di pusat admin Microsoft Entra dengan konfigurasi berikut. Untuk informasi selengkapnya, lihat Mendaftarkan aplikasi.
- Nama: identity-client-daemon-app
- Jenis akun yang dapat didukung: Akun di direktori organisasi ini saja (Tenant tunggal)
- Persyaratan minimum .NET 6.0 SDK.
- Visual Studio 2022 atau Visual Studio Code.
Membuat rahasia klien
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 Umum.
- Di bawah Kelola, pilih Sertifikat rahasia &>Rahasia klien>Rahasia klien baru.
- Dalam kotak Deskripsi, masukkan deskripsi untuk rahasia klien (misalnya, rahasia klien aplikasi web).
- Di bawah Kedaluwarsa, pilih durasi di mana rahasia tersebut valid (sesuai aturan keamanan organisasi Anda), kemudian pilih Tambahkan.
- Rekam Nilairahasia. Anda menggunakan nilai ini untuk konfigurasi di langkah selanjutnya. Nilai rahasia tidak akan ditampilkan lagi, dan tidak dapat diperoleh dengan cara apa pun, setelah Anda menavigasi dari Sertifikat dan Rahasia . Pastikan Anda merekamnya.
Saat Anda membuat kredensial untuk aplikasi klien rahasia:
Microsoft menyarankan agar Anda menggunakan sertifikat alih-alih rahasia klien sebelum memindahkan aplikasi ke lingkungan produksi. Untuk informasi selengkapnya tentang cara menggunakan sertifikat, lihat petunjuk pada kredensial sertifikat autentikasi aplikasi pada platform identitas Microsoft.
Untuk tujuan pengujian, Anda dapat membuat sertifikat yang ditandatangani sendiri dan mengonfigurasi aplikasi Untuk mengautentikasinya. Namun, dalam lingkunganproduksi, Anda harus membeli sertifikat yang ditandatangani oleh otoritas sertifikasi terkemuka, lalu menggunakan Azure Key Vault untuk mengelola akses sertifikat dan masa berlaku.
Memberikan izin API ke aplikasi daemon
Agar aplikasi daemon dapat mengakses data di Microsoft Graph API, Anda memberinya izin yang dibutuhkan. Aplikasi daemon memerlukan izin jenis aplikasi. Pengguna tidak dapat berinteraksi dengan aplikasi daemon, sehingga administrator penyewa harus menyetujui izin ini. Gunakan langkah-langkah berikut untuk memberikan dan menyetujui izin:
Untuk aplikasi daemon .NET, Anda tidak perlu memberikan dan menyetujui izin apa pun. Aplikasi daemon ini membaca informasi pendaftaran aplikasinya sendiri, sehingga dapat melakukannya tanpa diberikan izin aplikasi apa pun.
Mengkloning atau mengunduh aplikasi sampel
Untuk mendapatkan aplikasi sampel, Anda dapat mengkloningnya dari GitHub atau mengunduhnya sebagai file .zip.
- Untuk mengkloning sampel, buka prompt perintah dan navigasi ke tempat Anda ingin membuat proyek, dan masukkan perintah berikut:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
- Unduh file .zip. Ekstrak ke jalur file di mana panjang nama kurang dari 260 karakter.
Mengonfigurasi proyek
Untuk menggunakan detail pendaftaran aplikasi Anda dalam sampel aplikasi daemon klien, gunakan langkah-langkah berikut:
Buka jendela konsol lalu navigasikan ke direktori ms-identity-docs-code-dotnet/console-daemon:
cd ms-identity-docs-code-dotnet/console-daemon
Buka Program.cs dan ganti konten file dengan cuplikan berikut;
// Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id> Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center", // 'Enter the client ID obtained from the Microsoft Entra admin center ClientId = "Enter the client ID obtained from the Microsoft Entra admin center", // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center ClientSecret = "Enter the client secret value obtained from the Mifcrosoft Entra admin center", // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
-
Authority
- Otoritas adalah URL yang menunjukkan direktori tempat MSAL dapat meminta token. Ganti Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center dengan nilai ID Direktori (tenant) yang dicatat sebelumnya. -
ClientId
- Pengidentifikasi aplikasi, juga disebut sebagai klien. Ganti teks dalam tanda kutip dengan nilaiApplication (client) ID
yang direkam sebelumnya dari halaman gambaran umum aplikasi terdaftar. -
ClientSecret
- Rahasia klien yang dibuat untuk aplikasi di pusat admin Microsoft Entra. Masukkan nilai rahasia klien. -
ClientObjectId
- ID objek aplikasi klien. Ganti teks dalam tanda kutip dengan nilaiObject ID
yang Anda rekam sebelumnya dari halaman gambaran umum aplikasi terdaftar.
-
Menjalankan dan menguji aplikasi
Anda telah mengonfigurasi aplikasi sampel Anda. Anda dapat melanjutkan untuk menjalankan dan mengujinya.
Dari jendela konsol Anda, jalankan perintah berikut untuk membangun dan menjalankan aplikasi:
dotnet run
Setelah aplikasi berhasil berjalan, aplikasi menampilkan respons yang mirip dengan cuplikan berikut (dipersingkat untuk brevity):
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"deletedDateTime": null,
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"applicationTemplateId": null,
"disabledByMicrosoftStatus": null,
"createdDateTime": "2021-01-17T15:30:55Z",
"displayName": "identity-dotnet-console-app",
"description": null,
"groupMembershipClaims": null,
...
}
Cara kerjanya
Aplikasi daemon memperoleh token atas nama dirinya sendiri (bukan atas nama pengguna). Pengguna tidak dapat berinteraksi dengan aplikasi daemon karena memerlukan identitasnya sendiri. Jenis aplikasi ini meminta token akses dengan menggunakan identitas aplikasinya dengan menyajikan ID aplikasi, kredensial (rahasia atau sertifikat), dan URI ID aplikasinya. Aplikasi daemon menggunakan alur pemberian kredensial klien OAuth 2.0 standar untuk memperoleh token akses.
Aplikasi ini memperoleh token akses dari platform identitas Microsoft. Token akses berada dalam cakupan API Microsoft Graph. Aplikasi kemudian menggunakan token akses untuk meminta detail pendaftaran aplikasinya sendiri dari Microsoft Graph API. Aplikasi ini dapat meminta sumber daya apa pun dari Microsoft Graph API selama token akses memiliki izin yang tepat.
Sampel menunjukkan bagaimana pekerjaan yang tidak dijaga atau layanan Windows dapat berjalan dengan identitas aplikasi, bukan identitas pengguna.
Konten terkait
Pelajari dengan membangun aplikasi web ASP.NET ini dengan seri Tutorial: Mendaftarkan aplikasi dengan platform identitas Microsoft.
Panduan Cepat: Menyebarkan aplikasi web ASP.NET ke Azure App Service
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda belum memilikinya, Buat akun secara gratis.
- Akun Azure ini harus memiliki izin untuk mengelola aplikasi. Salah satu peran Microsoft Entra berikut ini menyertakan izin yang diperlukan:
- Administrator Aplikasi
- Pengembang Aplikasi
- Administrator Aplikasi Cloud
- Penghuni eksternal. Untuk membuatnya, pilih dari metode berikut:
- (Disarankan) Gunakan ekstensi Microsoft Entra External ID untuk menyiapkan penyewa eksternal melalui Visual Studio Code.
- Buat penyewa eksternal baru di pusat admin Microsoft Entra.
- Daftarkan aplikasi baru di pusat admin Microsoft Entra dengan konfigurasi berikut. Untuk informasi selengkapnya, lihat Mendaftarkan aplikasi.
- Nama: ciam-daemon-app
- Jenis akun yang dapat didukung: Akun di direktori organisasi ini saja (Tenant tunggal)
- Visual Studio Code atau editor kode lainnya.
- .NET 7.0 atau yang lebih baru.
- Node.js (hanya untuk implementasi Node)
Membuat rahasia klien
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 Umum.
- Di bawah Kelola, pilih Sertifikat rahasia &>Rahasia klien>Rahasia klien baru.
- Dalam kotak Deskripsi, masukkan deskripsi untuk rahasia klien (misalnya, rahasia klien aplikasi web).
- Di bawah Kedaluwarsa, pilih durasi di mana rahasia tersebut valid (sesuai aturan keamanan organisasi Anda), kemudian pilih Tambahkan.
- Rekam Nilairahasia. Anda menggunakan nilai ini untuk konfigurasi di langkah selanjutnya. Nilai rahasia tidak akan ditampilkan lagi, dan tidak dapat diperoleh dengan cara apa pun, setelah Anda menavigasi dari Sertifikat dan Rahasia . Pastikan Anda merekamnya.
Saat Anda membuat kredensial untuk aplikasi klien rahasia:
Microsoft menyarankan agar Anda menggunakan sertifikat alih-alih rahasia klien sebelum memindahkan aplikasi ke lingkungan produksi. Untuk informasi selengkapnya tentang cara menggunakan sertifikat, lihat petunjuk pada kredensial sertifikat autentikasi aplikasi pada platform identitas Microsoft.
Untuk tujuan pengujian, Anda dapat membuat sertifikat yang ditandatangani sendiri dan mengonfigurasi aplikasi Untuk mengautentikasinya. Namun, dalam lingkunganproduksi, Anda harus membeli sertifikat yang ditandatangani oleh otoritas sertifikasi terkemuka, lalu menggunakan Azure Key Vault untuk mengelola akses sertifikat dan masa berlaku.
Memberikan izin API 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 oleh organisasi saya.
Dalam daftar API, pilih API seperti ciam-ToDoList-api.
Pilih opsi Izin aplikasi. Kami memilih opsi ini agar aplikasi login secara otomatis, namun tidak mewakili 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 Diberikan untuk <nama penyewa Anda> muncul di bawah Status untuk kedua izin tersebut.
Mengonfigurasi peran aplikasi
API perlu menerbitkan minimal satu peran aplikasi untuk aplikasi, yang juga disebut sebagai izin aplikasi , sehingga aplikasi klien dapat mendapatkan token akses atas nama mereka sendiri. Izin aplikasi adalah jenis izin yang harus diterbitkan API ketika mereka ingin memungkinkan aplikasi klien berhasil mengautentikasi sebagai diri mereka sendiri dan tidak perlu memasukkan pengguna. Untuk menerbitkan izin aplikasi, ikuti langkah-langkah berikut:
Dari halaman Pendaftaran Aplikasi , pilih aplikasi yang Anda buat (seperti ciam-ToDoList-api) untuk membuka halaman Gambaran Umum .
Di bawah Kelola, pilih peran Aplikasi .
Pilih Buat peran aplikasi, lalu masukkan nilai berikut, lalu pilih Terapkan untuk menyimpan perubahan Anda:
Harta benda Nilai Nama tampilan ToDoList.Read.All Jenis anggota yang diizinkan Aplikasi Nilai ToDoList.Read.All Deskripsi Izinkan aplikasi membaca daftar ToDo pengguna mana pun menggunakan 'TodoListApi' Apakah Anda ingin mengaktifkan peran aplikasi ini? Tetap periksa Pilih Buat peran aplikasi lagi, lalu masukkan nilai berikut untuk peran aplikasi kedua, lalu pilih Terapkan untuk menyimpan perubahan Anda:
Harta benda Nilai Nama tampilan ToDoList.ReadWrite.All Jenis anggota yang diizinkan Aplikasi Nilai ToDoList.ReadWrite.All Deskripsi Izinkan aplikasi membaca dan menulis daftar tugas setiap pengguna menggunakan 'ToDoListApi' Apakah Anda ingin mengaktifkan peran aplikasi ini? Tetap periksa
Mengonfigurasi klaim opsional
Anda dapat menambahkan klaim opsional idtyp untuk membantu web API menentukan apakah token adalah token aplikasi atau token aplikasi + pengguna. Meskipun Anda dapat menggunakan kombinasi scp dan peran klaim untuk tujuan yang sama, menggunakan klaim idtyp adalah cara termudah untuk membedakan token aplikasi dan token gabungan pengguna + aplikasi. Misalnya, nilai dari klaim ini adalah aplikasi saat token adalah token khusus untuk aplikasi.
Mengkloning atau mengunduh sampel aplikasi daemon dan API web
Untuk mendapatkan aplikasi sampel, Anda dapat mengkloningnya dari GitHub atau mengunduhnya sebagai file .zip.
Untuk mengkloning sampel, buka prompt perintah dan navigasi ke tempat Anda ingin membuat proyek, dan masukkan perintah berikut:
git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
Atau, mengunduh sampel .zip file, lalu mengekstraknya ke jalur file di mana panjang nama kurang dari 260 karakter.
Menginstal dependensi proyek
Buka jendela konsol, dan ubah ke direktori yang berisi aplikasi sampel Node.js:
cd 2-Authorization\3-call-api-node-daemon\App
Jalankan perintah berikut untuk menginstal dependensi aplikasi:
npm install && npm update
Mengonfigurasi contoh aplikasi daemon dan API
Untuk menggunakan detail pendaftaran aplikasi Anda di sampel aplikasi web klien, gunakan langkah-langkah berikut:
Di editor kode Anda, buka file
App\authConfig.js
.Temukan tanda tempat:
Enter_the_Application_Id_Here
dan ganti dengan ID Aplikasi (klien) dari aplikasi daemon yang Anda daftarkan sebelumnya.Enter_the_Tenant_Subdomain_Here
dan gantikan dengan subdomain Direktori (penyewa). Misalnya, jika domain utama penyewa Andacontoso.onmicrosoft.com
, gunakancontoso
. Jika Anda tidak memiliki nama penyewa, pelajari cara membaca detail penyewa Anda.Enter_the_Client_Secret_Here
lalu gantikan dengan nilai rahasia aplikasi daemon yang Anda salin sebelumnya.Enter_the_Web_Api_Application_Id_Here
dan ganti dengan ID Aplikasi (klien) API web yang Anda salin sebelumnya.
Untuk menggunakan pendaftaran aplikasi Anda dalam sampel API web:
Di editor kode Anda, buka file
API\ToDoListAPI\appsettings.json
.Temukan tanda tempat:
Enter_the_Application_Id_Here
dan ganti dengan ID Aplikasi (klien) API web yang Anda salin.Enter_the_Tenant_Id_Here
dan ganti dengan ID Direktori (penyewa) yang Anda salin sebelumnya.Enter_the_Tenant_Subdomain_Here
dan ganti dengan subdomain Direktori (penyewa). Misalnya, jika domain utama penyewa Andacontoso.onmicrosoft.com
, gunakancontoso
. Jika Anda tidak memiliki nama penyewa, pelajari cara membaca detail penyewa Anda.
Menjalankan dan menguji sampel aplikasi daemon dan API
Anda telah mengonfigurasi aplikasi sampel Anda. Anda dapat melanjutkan untuk menjalankan dan mengujinya.
Buka jendela konsol, lalu jalankan API web dengan menggunakan perintah berikut:
cd 2-Authorization\3-call-api-node-daemon\API\ToDoListAPI dotnet run
Jalankan klien aplikasi web dengan menggunakan perintah berikut:
2-Authorization\3-call-api-node-daemon\App node . --op getToDos
Jika aplikasi daemon dan API web Anda berhasil dijalankan, Anda akan melihat sesuatu yang mirip dengan array JSON berikut di jendela konsol Anda
{
"id": 1,
"owner": "3e8....-db63-43a2-a767-5d7db...",
"description": "Pick up grocery"
},
{
"id": 2,
"owner": "c3cc....-c4ec-4531-a197-cb919ed.....",
"description": "Finish invoice report"
},
{
"id": 3,
"owner": "a35e....-3b8a-4632-8c4f-ffb840d.....",
"description": "Water plants"
}
Cara kerjanya
Aplikasi Node.js menggunakan alur pemberian kredensial klien OAuth 2.0 untuk memperoleh token akses untuk dirinya sendiri dan bukan untuk pengguna. Token akses yang diminta oleh aplikasi berisi izin yang ditetapkan sebagai peran. Alur kredensial klien menggunakan sekumpulan izin ini sebagai pengganti cakupan pengguna untuk token aplikasi. Anda mengekspos izin aplikasi ini di API web sebelumnya, lalu memberikannya ke aplikasi daemon.
Di sisi API, sampel API web .NET, API harus memverifikasi bahwa token akses memiliki izin yang diperlukan (izin aplikasi). API web tidak dapat menerima token akses yang tidak memiliki izin yang diperlukan.
Akses ke data
Titik akhir API Web harus disiapkan untuk menerima panggilan dari pengguna dan aplikasi. Oleh karena itu, harus memiliki cara untuk menanggapi setiap permintaan yang sesuai. Misalnya, panggilan dari pengguna yang menggunakan izin atau cakupan yang didelegasikan akan menerima daftar data pengguna to-do. Di sisi lain, panggilan dari sebuah aplikasi melalui izin dan peran aplikasi mungkin menerima seluruh daftar to-do. Namun, dalam artikel ini, kami hanya melakukan panggilan aplikasi, jadi kami tidak perlu mengonfigurasi izin/cakupan yang didelegasikan.