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.
Tutorial ini menunjukkan kepada Anda cara menyambungkan aplikasi Azure App Service ke database Azure SQL back-end dengan meniru pengguna yang masuk, juga disebut alur atas nama. Untuk mengonfigurasi alur ini, Anda mengaktifkan autentikasi bawaan App Service menggunakan IdP Microsoft Entra.
Metode konektivitas ini lebih canggih daripada pendekatan identitas terkelola dalam Tutorial: Mengakses data dengan identitas terkelola, dan memiliki keuntungan berikut dalam skenario perusahaan:
- Menghilangkan rahasia koneksi ke layanan back-end, seperti halnya pendekatan identitas terkelola.
- Memberikan database back-end atau layanan Azure lainnya kontrol lebih besar atas berapa banyak akses yang diberikan kepada siapa.
- Memungkinkan aplikasi menyesuaikan presentasi datanya dengan pengguna yang masuk.
Dalam tutorial ini, Anda menambahkan autentikasi Microsoft Entra ke aplikasi web .NET yang memiliki back end Azure SQL Database. Anda akan mempelajari cara untuk:
- Aktifkan autentikasi Microsoft Entra untuk Azure SQL Database.
- Nonaktifkan opsi autentikasi SQL Database lainnya.
- Tambahkan ID Microsoft Entra sebagai penyedia identitas untuk aplikasi Anda.
- Mengonfigurasi izin peniruan identitas pengguna SQL Database.
- Konfigurasikan App Service untuk menyediakan token akses yang dapat digunakan untuk SQL Database.
- Akses database Azure SQL Anda atas nama pengguna Microsoft Entra yang masuk.
Saat Anda menyelesaikan tutorial, aplikasi Anda terhubung dengan aman ke SQL Database atas nama pengguna yang masuk.
Catatan
- ID Microsoft Entra tidak didukung untuk SQL Server lokal.
- Autentikasi Microsoft Entra berbeda dari autentikasi Windows Terintegrasi di Active Directory (AD) Domain Services (DS) lokal. AD DS dan MICROSOFT Entra ID menggunakan protokol autentikasi yang sama sekali berbeda. Untuk informasi selengkapnya, lihat dokumentasi Microsoft Entra Domain Services.
Prasyarat
Memiliki akses ke penyewa Microsoft Entra yang diisi dengan pengguna dan grup.
Selesaikan tutorial di Tutorial: Buat aplikasi ASP.NET Core dan SQL Database di Azure App Service, dan gunakan aplikasi lengkap untuk tutorial ini.
Atau, sesuaikan langkah-langkah dan gunakan aplikasi .NET Anda sendiri dengan SQL Database. Langkah-langkah dalam tutorial ini mendukung versi .NET berikut:
- .NET Framework 4.8 ke atas
- .NET 6.0 ke atas
Masuk ke Azure Cloud Shell atau siapkan lingkungan Anda untuk menggunakan Azure CLI.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk menemukan versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
1. Mengonfigurasi server database dengan autentikasi Microsoft Entra
Aktifkan autentikasi Microsoft Entra ke database Azure SQL dengan menetapkan pengguna Microsoft Entra sebagai admin server Azure SQL. Admin Microsoft Entra harus merupakan pengguna yang dibuat, diimpor, disinkronkan, atau diundang ke id Microsoft Entra. Pengguna Microsoft Entra mungkin tidak sama dengan pengguna akun Microsoft untuk langganan Azure.
Untuk menambahkan pengguna ID Microsoft Entra sebagai admin server Azure SQL, jalankan perintah Azure CLI berikut.
Gunakan
az ad user listdengandisplay-nameparameter , ,filteratauupnuntuk mendapatkan ID objek untuk pengguna ID Microsoft Entra yang ingin Anda jadikan admin. Misalnya, perintah berikut mencantumkan informasi untuk pengguna ID Microsoft Entra dengandisplay-nameNama Belakang Nama Depan.az ad user list --display-name "Firstname Lastname"idSalin nilai dari output yang akan digunakan di langkah berikutnya.Tips
Anda dapat menjalankan
az ad user listmandiri untuk menampilkan informasi bagi semua pengguna di direktori Microsoft Entra.Tambahkan pengguna ID Microsoft Entra sebagai admin di server Azure SQL Anda dengan menggunakan
az sql server ad-admin createdenganobject-idparameter . Dalam perintah berikut, ganti<group-name>dengan nama grup sumber daya server Anda,<server-name>dengan nama server Anda dikurangi.database.windows.netakhiran, dan<entra-id>denganidoutput dari perintah sebelumnyaaz ad user list.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Batasi autentikasi server database hanya untuk autentikasi Microsoft Entra. Langkah ini menonaktifkan autentikasi nama pengguna dan kata sandi SQL.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Untuk informasi selengkapnya tentang membuat pengguna Microsoft Entra, lihat Menambahkan atau menghapus pengguna menggunakan ID Microsoft Entra.
- Untuk informasi selengkapnya tentang pengguna Microsoft Entra yang diizinkan untuk SQL Database, lihat Fitur dan batasan Microsoft Entra di SQL Database.
- Untuk informasi selengkapnya tentang menambahkan admin server Azure SQL, lihat Menyediakan administrator Microsoft Entra untuk server Anda.
2. Aktifkan autentikasi ID Microsoft Entra untuk aplikasi Anda
Tambahkan ID Microsoft Entra sebagai penyedia identitas untuk aplikasi Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi autentikasi Microsoft Entra untuk aplikasi App Services Anda.
Pada halaman portal Microsoft Azure untuk aplikasi Anda, pilih Autentikasi di bawah Pengaturan di menu navigasi kiri.
Pada halaman Autentikasi , pilih Tambahkan Penyedia Identitas, atau pilih Tambahkan penyedia di bagian Penyedia identitas .
Pada halaman Tambahkan idP , pilih Microsoft sebagai penyedia.
Untuk Kedaluwarsa rahasia klien, pilih salah satu opsi daftar dropdown, seperti Direkomendasikan: 180 hari.
Pertahankan semua pengaturan default, dan pilih Tambahkan.
Catatan
Jika Anda mengonfigurasi ulang pengaturan autentikasi aplikasi, token di penyimpanan token mungkin tidak dibuat ulang dari pengaturan baru. Untuk memastikan token Anda meregenerasi, keluar, dan masuk kembali ke aplikasi Anda. Metode yang mudah adalah menggunakan browser Anda dalam mode privat. Tutup dan buka kembali browser dalam mode privat setelah mengubah pengaturan di aplikasi Anda.
3. Mengonfigurasi peniruan pengguna SQL Database
Berikan izin aplikasi Anda untuk mengakses SQL Database atas nama pengguna Microsoft Entra yang masuk.
Pada halaman Autentikasi aplikasi, pilih nama aplikasi Anda di bawah Penyedia identitas.
Halaman pendaftaran aplikasi terbuka. Pendaftaran ini dibuat secara otomatis saat Anda menambahkan penyedia Microsoft Entra.
Pilih Izin API di bawah Kelola di menu navigasi kiri.
Pada halaman Izin API , pilih Tambahkan izin.
Pada layar Minta izin API , pilih tab API yang digunakan organisasi saya .
Masukkan Azure SQL Database di kotak pencarian dan pilih hasilnya.
Di bawah Jenis izin apa yang diperlukan aplikasi Anda, pilih Izin yang didelegasikan, lalu pilih kotak centang di samping user_impersonation, lalu pilih Tambahkan izin.
Pendaftaran aplikasi di Microsoft Entra sekarang memiliki izin yang diperlukan untuk terhubung ke SQL Database dengan meniru pengguna yang masuk.
4. Mengonfigurasi App Service untuk mengembalikan token akses yang dapat digunakan
Untuk mengonfigurasi aplikasi Anda untuk menyediakan token akses yang dapat digunakan untuk SQL Database, Anda menambahkan https://database.windows.net/user_impersonation sebagai scope penyedia Microsoft Entra loginParametersaplikasi . Perintah berikut menambahkan loginParameters properti dengan cakupan kustom ke pengaturan penyedia login identitas Microsoft Entra.
Dari cakupan yang diminta, App Service sudah meminta openid, , profiledan email cakupan secara default. Cakupan offline_access disertakan sehingga Anda dapat me-refresh token. Untuk informasi selengkapnya, lihat Cakupan OpenID Connect.
https://database.windows.net/user_impersonation Cakupan mengacu pada Azure SQL Database dan menyediakan JSON Web Token (JWT) yang menentukan SQL Database sebagai penerima token. Perintah ini menggunakan jq untuk pemrosesan JSON, yang sudah diinstal di Cloud Shell.
authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"
Tips
Untuk mengonfigurasi cakupan yang diperlukan menggunakan antarmuka web alih-alih Azure CLI, gunakan Konfigurasikan penyedia Microsoft Entra untuk menyediakan token refresh, menambahkan https://database.windows.net/user_impersonation ke cakupan yang diminta.
Aplikasi Anda sekarang dikonfigurasi untuk menghasilkan token akses yang diterima SQL Database.
Catatan
Token akses kedaluwarsa setelah beberapa waktu. Untuk informasi tentang cara merefresh token akses Anda tanpa mengharuskan pengguna untuk mengautentikasi ulang dengan aplikasi Anda, lihat Menyegarkan token autentikasi.
5. Gunakan token akses dalam kode aplikasi Anda
Perbarui kode aplikasi Anda untuk menambahkan token akses yang disediakan oleh autentikasi App Service ke objek koneksi.
Catatan
Kode ini tidak berfungsi secara lokal. Untuk informasi selengkapnya dan alternatif untuk penelusuran kesalahan lokal, lihat Debug secara lokal saat Anda menggunakan autentikasi App Service.
Di objek Anda
DbContextdi DatabaseContext.cs atau file lain yang mengonfigurasi konteks database, ubah konstruktor default untuk menambahkan token akses ID Microsoft Entra ke objek koneksi.public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor) : base(options) { var conn = Database.GetDbConnection() as SqlConnection; conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]; }Jika Anda memiliki string koneksi yang dipanggil
defaultConnectiondi App Service yang menggunakan autentikasi SQL dengan nama pengguna dan kata sandi, gunakan perintah berikut untuk menghapus rahasia koneksi. Ganti<group-name>,<app-name>,<db-server-name>, dan<db-name>dengan nilai Anda.az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
6. Terbitkan perubahan Anda
Jika Anda menggunakan Visual Studio Code di browser untuk membuat perubahan kode di fork GitHub, pilih Kontrol Sumber dari menu sebelah kiri. Masukkan pesan penerapan seperti OBO connect dan pilih Terapkan.
Commit tersebut memicu penerapan GitHub Actions ke App Service. Tunggu beberapa menit hingga penerapan selesai.
Anda juga dapat menerbitkan perubahan di Git Bash dengan menggunakan perintah berikut:
git commit -am "configure managed identity"
git push azure main
Jika kode Anda ada di Visual Studio:
Klik kanan proyek Anda di Penjelajah Solusi dan pilih Terbitkan.
Pada halaman Terbitkan , pilih Terbitkan.
Saat halaman aplikasi baru menampilkan aplikasi Anda, aplikasi tersambung ke database Azure SQL atas nama pengguna Microsoft Entra yang masuk. Anda harus dapat menggunakan dan mengedit aplikasi seperti biasa.
7. Membersihkan sumber daya
Di langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam grup sumber daya. Saat Anda tidak lagi memerlukan sumber daya ini, hapus grup sumber daya dengan menjalankan perintah berikut:
az group delete --name <group-name>
Perintah ini mungkin perlu waktu untuk dijalankan.
Tanya jawab umum
- Mengapa saya mendapatkan kesalahan "Gagal masuk untuk pengguna '<prinsipal> yang diidentifikasi token'"?
- Bagaimana cara menambahkan pengguna atau grup Microsoft Entra lainnya di Azure SQL Database?
- Bagaimana cara men-debug secara lokal saat menggunakan autentikasi App Service?
- Apa yang terjadi ketika token akses kedaluwarsa?
Mengapa saya mendapatkan kesalahan "Gagal masuk untuk pengguna '<prinsipal> yang diidentifikasi token'"?
Penyebab paling umum untuk kesalahan Login failed for user '<token-identified principal>' adalah:
- Autentikasi Microsoft Entra tidak dikonfigurasi untuk database Azure SQL. Lihat Mengonfigurasi server database dengan autentikasi Microsoft Entra.
- Tidak ada token yang valid di
X-MS-TOKEN-AAD-ACCESS-TOKENheader permintaan. Kode ini tidak berfungsi di lingkungan lokal. Untuk informasi dan alternatif selengkapnya, lihat Men-debug secara lokal saat Anda menggunakan autentikasi App Service. - Pengguna tidak memiliki izin untuk menyambungkan ke database. Untuk menambahkan pengguna dan izin, lihat Menambahkan pengguna atau grup Microsoft Entra lainnya di Azure SQL Database.
Bagaimana cara menambahkan pengguna atau grup Microsoft Entra lainnya di Azure SQL Database?
Untuk menambahkan lebih banyak pengguna atau grup, sambungkan ke server database Anda menggunakan sqlcmd atau SQL Server Management Studio (SSMS), dan buat pengguna database mandiri yang dipetakan ke identitas Microsoft Entra.
Contoh Transact-SQL berikut menambahkan identitas Microsoft Entra ke SQL Server dan memberikan identitas beberapa peran database:
CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO
Bagaimana cara men-debug secara lokal saat menggunakan autentikasi App Service?
Karena autentikasi App Service adalah fitur Azure, kode dalam tutorial ini tidak berfungsi di lingkungan lokal Anda. Tidak seperti aplikasi yang berjalan di Azure, kode lokal Anda tidak mendapat manfaat dari middleware autentikasi App Service. Anda dapat menggunakan alternatif berikut untuk penelusuran kesalahan lokal:
- Sambungkan ke SQL Database dari lingkungan lokal Anda dengan
Active Directory Interactiveautentikasi. Alur autentikasi ini tidak masuk ke pengguna itu sendiri, tetapi terhubung ke database back-end dengan pengguna yang masuk sehingga Anda dapat menguji otorisasi database secara lokal. - Salin token akses secara manual ke kode Anda sebagai pengganti
X-MS-TOKEN-AAD-ACCESS-TOKENheader permintaan. - Jika Anda menyebarkan dari Visual Studio, gunakan debug jarak jauh aplikasi App Service Anda.
Apa yang terjadi ketika token akses kedaluwarsa?
Token akses Anda kedaluwarsa setelah beberapa waktu. Untuk informasi tentang cara merefresh token akses Anda tanpa mengharuskan pengguna untuk melakukan otorisasi ulang dengan aplikasi Anda, lihat Merefresh token penyedia identitas.
Konten terkait
- Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola
- Tutorial: Mengakses Microsoft Graph dari aplikasi .NET yang aman sebagai aplikasi itu sendiri
- Tutorial: Mengisolasi komunikasi back-end dengan integrasi Jaringan Virtual
- Memetakan nama DNS kustom yang sudah ada ke Azure App Service