Memecahkan masalah API penyedia klaim kustom Anda
Peristiwa autentikasi dan penyedia klaim kustom memungkinkan Anda menyesuaikan pengalaman autentikasi Microsoft Entra dengan mengintegrasikan dengan sistem eksternal. Misalnya, Anda dapat membuat API penyedia klaim kustom dan mengonfigurasi aplikasi OpenID Connect atau aplikasi SAML untuk menerima token dengan klaim dari penyimpanan eksternal.
Perilaku kesalahan
Saat panggilan API gagal, perilaku kesalahannya adalah sebagai berikut:
- Untuk aplikasi OpenId Connect - ID Microsoft Entra mengalihkan pengguna kembali ke aplikasi klien dengan kesalahan. Token tidak ditambang.
- Untuk aplikasi SAML - ID Microsoft Entra menunjukkan layar kesalahan kepada pengguna dalam pengalaman autentikasi. Pengguna tidak dialihkan kembali ke aplikasi klien.
Kode kesalahan yang dikirim kembali ke aplikasi atau pengguna bersifat generik. Untuk memecahkan masalah, periksa log masuk untuk kode kesalahan.
Pencatatan
Untuk memecahkan masalah dengan titik akhir REST API penyedia klaim kustom Anda, REST API harus menangani pengelogan. Azure Functions dan platform pengembangan API lainnya menyediakan solusi pengelogan mendalam. Gunakan solusi tersebut untuk mendapatkan informasi terperinci tentang perilaku API Anda dan memecahkan masalah logika API Anda.
Log masuk Microsoft Entra
Tip
Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.
Anda juga dapat menggunakan log masuk Microsoft Entra selain log REST API Anda, dan solusi diagnostik lingkungan hosting. Dengan menggunakan log masuk Microsoft Entra, Anda dapat menemukan kesalahan, yang dapat memengaruhi rincian masuk pengguna. Log masuk Microsoft Entra menyediakan informasi tentang status HTTP, kode kesalahan, durasi eksekusi, dan jumlah percobaan ulang yang terjadi API dipanggil oleh ID Microsoft Entra.
Log masuk Microsoft Entra juga terintegrasi dengan Azure Monitor. Anda dapat menyiapkan pemberitahuan dan pemantauan, memvisualisasikan data, dan berintegrasi dengan alat informasi keamanan dan manajemen peristiwa (SIEM). Misalnya, Anda dapat menyiapkan pemberitahuan jika jumlah kesalahan melebihi ambang tertentu yang Anda pilih.
Untuk mengakses log masuk Microsoft Entra:
Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Aplikasi Cloud.
Telusuri aplikasi Identity>Applications>Enterprise.
Pilih Log masuk, lalu pilih log masuk terbaru.
Untuk detail selengkapnya, pilih tab Peristiwa Autentikasi. Informasi yang terkait dengan panggilan REST API ekstensi autentikasi kustom ditampilkan, termasuk kode kesalahan apa pun.
Referensi kode kesalahan
Gunakan tabel berikut untuk mendiagnosis kode kesalahan.
Kode kesalahan | Nama kesalahan | Deskripsi |
---|---|---|
1003000 | EventHandlerUnexpectedError | Terjadi kesalahan tak terduga saat memproses penanganan aktivitas. |
1003001 | CustomExtenstionUnexpectedError | Terjadi kesalahan tak terduga saat memanggil API ekstensi kustom. |
1003002 | CustomExtensionInvalidHTTPStatus | API ekstensi kustom mengembalikan kode status HTTP yang tidak valid. Periksa apakah API mengembalikan kode status yang diterima yang ditentukan untuk jenis ekstensi kustom tersebut. |
1003003 | CustomExtensionInvalidResponseBody | Ada masalah saat mengurai isi respons ekstensi kustom. Periksa apakah isi respons API berada dalam skema yang dapat diterima untuk jenis ekstensi kustom tersebut. |
1003004 | CustomExtensionThrottlingError | Ada terlalu banyak permintaan ekstensi kustom. Pengecualian ini dilemparkan untuk panggilan API ekstensi kustom saat batas pembatasan tercapai. |
1003005 | CustomExtensionTimedOut | Ekstensi kustom tidak merespons dalam batas waktu yang diizinkan. Periksa apakah API Anda merespons dalam batas waktu yang dikonfigurasi untuk ekstensi kustom. Ini juga dapat menunjukkan bahwa token akses tidak valid. Ikuti langkah-langkah untuk memanggil REST API Anda secara langsung. |
1003006 | CustomExtensionInvalidResponseContentType | Jenis konten respons ekstensi kustom bukan 'application/json'. |
1003007 | CustomExtensionNullClaimsResponse | API ekstensi kustom merespons dengan kantong klaim null. |
1003008 | CustomExtensionInvalidResponseApiSchemaVersion | API ekstensi kustom tidak merespons dengan apiSchemaVersion yang sama dengan yang dipanggil. |
1003009 | CustomExtensionEmptyResponse | Isi respons API ekstensi kustom null ketika itu tidak diharapkan. |
1003010 | CustomExtensionInvalidNumberOfActions | Respons API ekstensi kustom menyertakan jumlah tindakan yang berbeda dari yang didukung untuk jenis ekstensi kustom tersebut. |
1003011 | CustomExtensionNotFound | Ekstensi kustom yang terkait dengan pendengar peristiwa tidak dapat ditemukan. |
1003012 | CustomExtensionInvalidActionType | Ekstensi kustom mengembalikan jenis tindakan yang tidak valid yang ditentukan untuk jenis ekstensi kustom tersebut. |
1003014 | CustomExtensionIncorrectResourceIdFormat | Properti identifierUris dalam manifes untuk pendaftaran aplikasi untuk ekstensi kustom, harus dalam format "api://{nama domain yang sepenuhnya memenuhi syarat}/{appid}. |
1003015 | CustomExtensionDomainNameDoesNotMatch | targetUrl dan resourceId dari ekstensi kustom harus memiliki nama domain yang sepenuhnya memenuhi syarat yang sama. |
1003016 | CustomExtensionResourceServicePrincipalNotFound | AppId dari resourceId ekstensi kustom harus sesuai dengan perwakilan layanan nyata di penyewa. |
1003017 | CustomExtensionClientServicePrincipalNotFound | Perwakilan layanan sumber daya ekstensi kustom tidak ditemukan di penyewa. |
1003018 | CustomExtensionClientServiceDisabled | Perwakilan layanan sumber daya ekstensi kustom dinonaktifkan di penyewa ini. |
1003019 | CustomExtensionResourceServicePrincipalDisabled | Perwakilan layanan sumber daya ekstensi kustom dinonaktifkan di penyewa ini. |
1003020 | CustomExtensionIncorrectTargetUrlFormat | URL target dalam format yang tidak tepat. Ini harus berupa URL valid yang dimulai dengan https. |
1003021 | CustomExtensionPermissionNotGrantedToServicePrincipal | Perwakilan layanan tidak memiliki persetujuan admin untuk peran aplikasi Microsoft Graph CustomAuthenticationExtensions.Receive.Payload (juga dikenal sebagai izin aplikasi) yang diperlukan agar aplikasi menerima permintaan HTTP ekstensi autentikasi kustom. |
1003022 | CustomExtensionMsGraphServicePrincipalDisabledOrNotFound | Perwakilan layanan MS Graph dinonaktifkan atau tidak ditemukan di penyewa ini. |
1003023 | CustomExtensionBlocked | Titik akhir yang digunakan untuk ekstensi kustom diblokir oleh layanan. |
1003024 | CustomExtensionResponseSizeExceeded | Ukuran respons ekstensi kustom melebihi batas maksimum. |
1003025 | CustomExtensionResponseClaimsSizeExceededed | Ukuran total klaim dalam respons ekstensi kustom melebihi batas maksimum. |
1003026 | CustomExtensionNullOrEmptyClaimKeyNotSupported | API ekstensi kustom merespons dengan klaim yang berisi kunci null atau kosong' |
1003027 | CustomExtensionConnectionError | Kesalahan saat menyambungkan ke API ekstensi kustom. |
Hubungi REST API Anda secara langsung
REST API Anda dilindungi oleh token akses Microsoft Entra. Anda dapat menguji API dengan;
- Mendapatkan token akses dengan pendaftaran aplikasi yang terkait dengan ekstensi autentikasi kustom
- Uji API Anda secara lokal menggunakan alat pengujian API.
Untuk tujuan pengembangan dan pengujian lokal, buka local.settings.json dan ganti kode dengan JSON berikut:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "AzureWebJobsSecretStorageType": "files", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "AuthenticationEvents__BypassTokenValidation" : false } }
Catatan
Jika Anda menggunakan paket NuGet Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents , pastikan untuk mengatur
"AuthenticationEvents__BypassTokenValidation" : true
untuk tujuan pengujian lokal.Menggunakan alat pengujian API pilihan Anda, buat permintaan HTTP baru dan atur metode HTTP ke
POST
.Gunakan isi JSON berikut yang meniru permintaan yang dikirim microsoft Entra ID ke REST API Anda.
{ "type": "microsoft.graph.authenticationEvent.tokenIssuanceStart", "source": "/tenants/aaaabbbb-0000-cccc-1111-dddd2222eeee/applications/00001111-aaaa-2222-bbbb-3333cccc4444", "data": { "@odata.type": "microsoft.graph.onTokenIssuanceStartCalloutData", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "authenticationEventListenerId": "11112222-bbbb-3333-cccc-4444dddd5555", "customAuthenticationExtensionId": "22223333-cccc-4444-dddd-5555eeee6666", "authenticationContext": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "client": { "ip": "127.0.0.1", "locale": "en-us", "market": "en-us" }, "protocol": "OAUTH2.0", "clientServicePrincipal": { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "appDisplayName": "My Test application", "displayName": "My Test application" }, "resourceServicePrincipal": { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "appDisplayName": "My Test application", "displayName": "My Test application" }, "user": { "companyName": "Casey Jensen", "createdDateTime": "2023-08-16T00:00:00Z", "displayName": "Casey Jensen", "givenName": "Casey", "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", "mail": "casey@contoso.com", "onPremisesSamAccountName": "Casey Jensen", "onPremisesSecurityIdentifier": "<Enter Security Identifier>", "onPremisesUserPrincipalName": "Casey Jensen", "preferredLanguage": "en-us", "surname": "Jensen", "userPrincipalName": "casey@contoso.com", "userType": "Member" } } } }
Tip
Jika Anda menggunakan token akses yang diperoleh dari ID Microsoft Entra, pilih Otorisasi lalu pilih Token pembawa, lalu tempelkan token akses yang Anda terima dari ID Microsoft Entra.
Pilih Kirim, dan Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
{ "data": { "@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData", "actions": [ { "@odata.type": "microsoft.graph.tokenIssuanceStart.provideClaimsForToken", "claims": { "customClaim1": "customClaimValue1", "customClaim2": [ "customClaimString1", "customClaimString2" ] } } ] } }
Peningkatan performa umum
Salah satu masalah paling umum adalah BAHWA API penyedia klaim kustom Anda tidak merespons dalam batas waktu dua detik. Jika REST API Anda tidak merespons dalam percobaan ulang berikutnya, maka autentikasi gagal. Untuk meningkatkan performa REST API Anda, ikuti saran di bawah ini:
- Jika API Anda mengakses API hilir apa pun, cache token akses yang digunakan untuk memanggil API ini, sehingga token baru tidak perlu diperoleh pada setiap eksekusi.
- Masalah performa sering kali terkait dengan layanan hilir. Tambahkan pengelogan, yang merekam waktu proses untuk memanggil ke layanan hilir apa pun.
- Jika Anda menggunakan penyedia cloud untuk menghosting API Anda, gunakan paket hosting yang menjaga API selalu "hangat". Untuk Azure Functions, ini dapat berupa paket Premium atau Paket khusus.
- Jalankan pengujian integrasi otomatis untuk autentikasi Anda. Anda juga dapat menggunakan alat pengujian API untuk menguji performa API Anda saja.