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.
Pemicu Peristiwa Autentikasi untuk Azure Functions menangani semua pemrosesan backend, (misalnya validasi skema token/json) untuk permintaan Http masuk untuk peristiwa Autentikasi. Dan memberi pengembang model objek berversi yang sangat di ketik untuk dikerjakan, yang berarti pengembang tidak perlu memiliki pengetahuan sebelumnya tentang payload json permintaan dan respons.
Kerangka kerja proyek ini menyediakan fitur-fitur berikut:
- Validasi token untuk mengamankan panggilan API
- Model objek, pengetikan, dan intellisense IDE
- Validasi masuk dan keluar dari skema permintaan dan respons API
- Penerapan versi
- Tidak perlu kode boilerplate.
Memulai
Menginstal paket npm
npm install @azure/functions-authentication-events
Prasyarat
- Alat fungsi Azure
- Azure Function Core Tools
- Jika menggunakan Visual Studio Code ekstensi berikut:
Mengautentikasi Klien
Ketika Azure AD layanan peristiwa autentikasi memanggil ekstensi kustom Anda, layanan tersebut akan mengirim Authorization header dengan Bearer {token}. Token ini akan mewakili autentikasi layanan ke layanan di mana:
- 'Sumber daya', juga dikenal sebagai audiens, adalah aplikasi yang Anda daftarkan untuk mewakili API Anda. Ini diwakili oleh
audklaim dalam token. - 'Klien' adalah aplikasi Microsoft yang mewakili layanan peristiwa autentikasi Azure AD. Ini memiliki
appIdnilai99045fe1-7639-4a75-9d4a-577b6ca3810f. Ini diwakili oleh:- Klaim
azpdalam token jika properti aplikasiaccessTokenAcceptedVersionAnda diatur ke2. - Klaim
appiddalam token jika properti aplikasiaccessTokenAcceptedVersionsumber daya Anda diatur ke1ataunull.
- Klaim
Ada tiga pendekatan untuk menangani token. Anda dapat menyesuaikan perilaku menggunakan pengaturan aplikasi seperti yang ditunjukkan di bawah ini atau melalui file local.settings.json di lingkungan lokal.
Memvalidasi token menggunakan integrasi autentikasi Azure Functions Azure AD
Saat menjalankan fungsi Anda dalam produksi, sangat disarankan untuk menggunakan integrasi autentikasi Azure Functions Azure AD untuk memvalidasi token masuk.
- Buka tab "Autentikasi" di Aplikasi Fungsi Anda
- Klik "Tambahkan IdP"
- Pilih "Microsoft" sebagai Penyedia Identitas
- Pilih "Berikan detail pendaftaran aplikasi yang ada"
- Masukkan
Application IDaplikasi yang mewakili API Anda di Azure AD
Penerbit dan audiens yang diizinkan tergantung pada accessTokenAcceptedVersion properti aplikasi Anda (dapat ditemukan di "Manifes" aplikasi).
accessTokenAcceptedVersion Jika properti diatur ke 2: 6. Atur Issuer URL to "https://login.microsoftonline.com/{tenantId}/v2.0" 7. Set an 'Allowed Audience' to the Application ID (appId')
accessTokenAcceptedVersion Jika properti diatur ke 1 atau null: 6. Atur Issuer URL to "https://sts.windows.net/{tenantId}/" 7. Set an 'Allowed Audience' to the Application ID URI (also known asidentifierUri). It should be in the format ofapi://{azureFunctionAppName}.azurewebsites.net/{resourceApiAppId}orapi://{FunctionAppFullyQualifiedDomainName}/{resourceApiAppId}' jika menggunakan nama domain kustom.
Secara default, pemicu peristiwa Autentikasi akan memvalidasi bahwa integrasi autentikasi Azure Function dikonfigurasi dan akan memeriksa apakah klien dalam token diatur ke 99045fe1-7639-4a75-9d4a-577b6ca3810f (melalui azp klaim atau appid dalam token).
Jika Anda ingin menguji API terhadap beberapa klien lain yang tidak Azure AD layanan peristiwa autentikasi, seperti menggunakan Postman, Anda dapat mengonfigurasi pengaturan aplikasi opsional:
- AuthenticationEvents__CustomCallerAppId - panduan klien yang Anda inginkan. Jika tidak disediakan,
99045fe1-7639-4a75-9d4a-577b6ca3810fdiasumsikan.
Minta pemicu memvalidasi token
Di lingkungan atau lingkungan lokal yang tidak dihosting di layanan Azure Function, pemicu dapat melakukan validasi token. Atur pengaturan aplikasi berikut:
- AuthenticationEvents__TenantId - ID penyewa Anda
- AuthenticationEvents__AudienceAppId - nilai yang sama dengan "Audiens yang diizinkan" di opsi 1.
- AuthenticationEvents__CustomCallerAppId (opsional) - panduan klien yang Anda inginkan. Jika tidak disediakan,
99045fe1-7639-4a75-9d4a-577b6ca3810fdiasumsikan.
local.settings.json Contoh file:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AuthenticationEvents__TenantId": "8615397b-****-****-****-********06c8",
"AuthenticationEvents__AudienceAppId": "api://46f98993-****-****-****-********0038",
"AuthenticationEvents__CustomCallerAppId": "46f98993-****-****-****-********0038"
}
}
Tidak ada validasi token
Jika Anda ingin tidak mengautentikasi token saat dalam pengembangan lokal, atur pengaturan aplikasi berikut:
- AuthenticationEvents__BypassTokenValidation - nilai
trueakan membuat pemicu tidak memeriksa validasi token.
Mulai Cepat
- Visual Studio Code
- Mulai Visual Studio Code
- Jalankan perintah
func init . --worker-runtime nodeterminal melalui palet perintah - Jalankan perintah
func newterminal melalui palet perintah - Ikuti perintah pembuatan proyek
- Jalankan perintah
npm install @azure/functions-authentication-eventsterminal melalui palet perintah - Jalankan perintah
npm installterminal melalui palet perintah - Jalankan perintah
npm run-script buildterminal melalui palet perintah
- Untuk tujuan pengembangan, ubah validasi token untuk pengujian:
- Tambahkan kunci aplikasi AuthenticationEvents__BypassTokenValidation ke bagian "Nilai" di file local.settings.json dan atur nilainya ke true. Jika Anda tidak memiliki file local.settings.json di lingkungan lokal Anda, buat file tersebut di akar Aplikasi Fungsi Anda.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AuthenticationEvents__BypassTokenValidation": true
}
}
- Setelah proyek dimuat, Anda dapat menjalankan kode sampel dan Anda akan melihat aplikasi pengembang fungsi Azure memuat titik akhir Anda.
Konsep utama
Konsep utama Azure .NET SDK dapat ditemukan di sini
Dokumentasi
Salah satu fungsi telah diterbitkan, ada beberapa pembacaan yang baik tentang pengelogan dan metrik yang dapat ditemukan di sini
Untuk Dokumentasi API, silakan lihat (Tautan TBD)
Setelah ini bergerak ke pratinjau, kami kecuali tidak ada perubahan yang melanggar dan akan semampu menghapus sumber nuget yang menunjuk ke pratinjau privat.
Contoh
Untuk Menguji Augmentasi Token, lakukan hal berikut.
- Buka proyek yang dibuat pada langkah sebelumnya. (Mulai Cepat)
- Jalankan Aplikasi.
func host start - Setelah aplikasi pengembang azure functions dimulai, salin url mendengarkan yang ditampilkan dengan aplikasi dimulai.
- Catatan: Semua fungsi Autentikasi tercantum, dalam kasus kami memiliki satu pendengar fungsi yang terdaftar yang disebut "OnTokenIssuanceStart"
- Titik akhir fungsi Anda kemudian akan menjadi kombinasi dari url dan fungsi yang mendengarkan, misalnya: "http://localhost:7071/runtime/webhooks/AuthenticationEvents?code=(YOUR_CODE)& function=OnTokenIssuanceStart"
- Posting payload berikut menggunakan sesuatu seperti Postman atau Fiddler.
- Langkah-langkah untuk menggunakan Postman dapat ditemukan (Link TBD)
{
"type": "microsoft.graph.authenticationEvent.tokenIssuanceStart",
"source": "/tenants/00000001-0000-0ff1-ce00-000000000000/applications/ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"data": {
"@odata.type": "microsoft.graph.onTokenIssuanceStartCalloutData",
"tenantId": "00000001-0000-0ff1-ce00-000000000000",
"authenticationEventListenerId": "f2390d57-9664-4dde-b625-f0115925e1e2",
"customAuthenticationExtensionId": "9cc1c1ed-5f04-4fdf-85c0-94a7c6ea819c",
"authenticationContext": {
"correlationId": "f4bd1870-b774-4fa5-ba78-e08ac6be14c0",
"client": {
"ip": "127.0.0.1",
"locale": "en-us",
"market": "en-us"
},
"protocol": "OAUTH2.0",
"clientServicePrincipal": {
"id": "eedfddb9-304e-4d62-aa83-24700a0bcf0e",
"appId": "ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"appDisplayName": "",
"displayName": "Test application"
},
"resourceServicePrincipal": {
"id": "eedfddb9-304e-4d62-aa83-24700a0bcf0e",
"appId": "ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"appDisplayName": "",
"displayName": "Test application"
},
"user": {
"companyName": "Evo Sts Test",
"country": "",
"id": "69d24544-c420-4721-a4bf-106f2378d9f6",
"mail": "testadmin@evostsoneboxtest.com",
"onPremisesSamAccountName": "testadmin",
"onPremisesSecurityIdentifier": "testadmin",
"preferredDataLocation": "",
"userPrincipalName": "testadmin@evostsoneboxtest.com"
}
}
}
}
- Anda akan melihat respons ini:
{
"data": {
"@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData",
"actions": [
{
"@odata.type": "ProvideClaimsForToken",
"claims": [
{
"DateOfBirth": "01/01/2000"
},
{
"CustomRoles": [
"Writer",
"Editor"
]
}
]
}
]
}
}
Pemecahan Masalah
- Visual Studio Code
- Jika berjalan di Visual Studio Code, Anda mendapatkan kesalahan di sepanjang baris Emulator Azure Storage lokal tidak tersedia, Anda dapat memulai emulator secara manual.! (Catatan: Emulator Azure Storage sekarang tidak digunakan lagi dan penggantian yang disarankan adalah Azurite)
- Jika menggunakan Visual Studio Code di Mac, silakan gunakan Azurite
- Jika Anda melihat kesalahan berikut di Windows (ini adalah bug) saat mencoba menjalankan proyeksi yang dibuat.
- Ini dapat diselesaikan dengan menjalankan perintah ini di powershell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachineinfo lebih lanjut tentang ini dapat ditemukan di sini dan di sini
Langkah berikutnya
Untuk informasi selengkapnya tentang Azure SDK, silakan merujuk ke situs web ini
Terbitkan
- Ikuti instruksi di sini untuk membuat dan menerbitkan Aplikasi Azure Anda. </azure/azure-functions/functions-develop-vs?tabs=in-process#publish-to-azure>
- Untuk menentukan titik akhir posting yang diterbitkan, gabungkan titik akhir fungsi azure yang Anda buat, rutekan ke pendengar dan kode pendengar, kode dengar dapat ditemukan dengan menavigasi ke aplikasi fungsi azure Anda, memilih "Kunci Aplikasi" dan menyalin nilai AuthenticationEvents_extension.
- Misalnya: "https://azureautheventstriggerdemo.azurewebsites.net/runtime/webhooks/AuthenticationEvents?code=(AuthenticationEvents_extension_key)& function=OnTokenIssuanceStart"
- Pastikan lingkungan produksi Anda memiliki pengaturan aplikasi yang benar untuk autentikasi token.
- Sekali lagi Anda dapat menguji fungsi yang diterbitkan dengan memposting payload di atas ke titik akhir baru.
Berkontribusi
Untuk detail tentang berkontribusi pada repositori ini, lihat panduan berkontribusi.
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.
Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repositori menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.
Azure SDK for JavaScript