Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Ringkasan
Kebijakan Verify API Key memungkinkan Anda menerapkan verifikasi kunci API saat runtime, aplikasi dengan kunci API yang disetujui akan mengakses API Anda. Kebijakan ini memastikan bahwa kunci API valid, memiliki belum dicabut, dan disetujui untuk menggunakan sumber daya tertentu yang terkait dengan API Google.
Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
Untuk tutorial yang menunjukkan cara membangun proxy API yang menggunakan kebijakan Verify API Key, lihat Amankan API dengan mewajibkan kunci API.
Sampel
Kunci dalam parameter kueri
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.apikey" /> </VerifyAPIKey>
Dalam contoh ini, kebijakan mengharapkan menemukan kunci API dalam variabel alur yang disebut
request.queryparam.apikey
. Variabel request.queryparam.{name}
adalah variabel alur Apigee standar yang diisi dengan nilai parameter kueri yang diteruskan
dalam permintaan klien.
Perintah curl
berikut akan meneruskan kunci API dalam parameter kueri:
curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls
{i>Key in header<i}
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey" /> </VerifyAPIKey>
Dalam contoh ini, kebijakan mengharapkan menemukan kunci API dalam variabel alur yang disebut
request.header.x-apikey
. Variabel request.header.{name}
adalah variabel alur Apigee standar yang diisi dengan nilai header yang diteruskan
dalam permintaan klien.
CURL berikut menunjukkan cara meneruskan kunci API di header:
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
Variabel kunci
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="requestAPIKey.key"/> </VerifyAPIKey>
Kebijakan ini dapat mereferensikan variabel apa pun yang berisi kunci. Kebijakan dalam contoh ini mengekstrak kunci API dari variabel bernama requestAPIKey.key.
Anda bebas menentukan cara variabel tersebut diisi. Misalnya, Anda bisa menggunakan alat Kebijakan variabel untuk mengisi requestAPIKey.key dari parameter kueri bernama myKey, seperti ditunjukkan di bawah ini:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar"> <Source>request</Source> <QueryParam name="myKey"> <Pattern ignoreCase="true">{key}</Pattern> </QueryParam> <VariablePrefix>requestAPIKey</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Variabel alur kebijakan akses
<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars"> <AssignVariable> <Name>devFirstName</Name> <Ref>verifyapikey.verify-api-key.developer.firstName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devLastName</Name> <Ref>verifyapikey.verify-api-key.developer.lastName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devEmail</Name> <Ref>verifyapikey.verify-api-key.developer.email</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Apigee secara otomatis mengisi serangkaian variabel flow saat menjalankan Verifikasi Kunci API kebijakan untuk kunci API yang valid. Anda dapat menggunakan variabel ini untuk mengakses informasi seperti aplikasi nama, ID aplikasi, dan informasi tentang pengembang atau perusahaan yang mendaftarkan aplikasi tersebut. Di kolom contoh di atas, Anda menggunakan kebijakan Tetapkan Pesan untuk mengakses nama depan, nama belakang pengembang nama, dan alamat email setelah Kunci Verifikasi API dieksekusi.
Semua variabel ini diawali oleh:
verifyapikey.{policy_name}
Dalam contoh ini, nama kebijakan kunci Verify API adalah "verify-api-key". Oleh karena itu, Anda mereferensikan
nama depan developer yang membuat permintaan dengan mengakses
variabel verifyapikey.verify-api-key.developer.firstName.
Pelajari Apigee
Tentang kebijakan Verify API Key
Saat developer mendaftarkan aplikasi di Apigee, Apigee akan otomatis membuat kunci konsumen dan pasangan secret. Anda dapat melihat pasangan kunci dan rahasia konsumen aplikasi di UI Apigee atau mengaksesnya dari Apigee API.
Pada saat pendaftaran aplikasi, developer memilih satu atau beberapa produk API untuk dikaitkan dengan aplikasi, yang mana produk API merupakan kumpulan resource dapat diakses melalui proxy API. Developer kemudian meneruskan kunci API (kunci konsumen) sebagai bagian dari setiap permintaan ke API dalam produk API yang terkait dengan aplikasi. Lihat Ringkasan publikasi untuk mengetahui informasi selengkapnya.
Kunci API dapat digunakan sebagai token autentikasi, atau dapat digunakan untuk mendapatkan akses OAuth token kata. Di OAuth, kunci API disebut sebagai "client id". Nama tersebut dapat digunakan secara bergantian. Lihat beranda OAuth untuk mengetahui informasi selengkapnya.
Apigee secara otomatis mengisi serangkaian variabel flow saat menjalankan kebijakan Verify API Key. Lihat Alur variabel di bawah ini untuk mengetahui informasi lebih lanjut.
Referensi Elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasi di kebijakan ini:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1"> <DisplayName>Custom label used in UI</DisplayName> <APIKey ref="variable_containing_api_key"/> <CacheExpiryInSeconds ref="request.queryparam.cache_expiry">Default value</CacheExpiryInSeconds/> </VerifyAPIKey>
<VerifyAPIKey> atribut
Contoh berikut menunjukkan atribut pada tag <VerifyAPIKey>
:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
<APIKey> elemen
Elemen ini menentukan variabel alur yang berisi kunci API. Biasanya, klien mengirimkan kunci API
dalam parameter kueri, header HTTP, atau parameter formulir. Misalnya, jika kunci dikirim dalam header
disebut x-apikey
, kuncinya akan ditemukan dalam variabel: request.header.x-apikey
Default | NA |
---|---|
Kehadiran | Wajib |
Jenis | String |
Atribut
Tabel berikut menjelaskan atribut elemen <APIKey>
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
referensi |
Referensi ke variabel yang berisi kunci API. Hanya satu lokasi yang diizinkan sesuai dengan kebijakan. |
T/A | Wajib |
Contoh
Dalam contoh ini, kunci diteruskan dalam parameter dan header yang disebut x-apikey
.
Sebagai parameter kueri:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.x-apikey"/> </VerifyAPIKey>
Sebagai header HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey"/> </VerifyAPIKey>
Sebagai parameter formulir HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.formparam.x-apikey"/> </VerifyAPIKey>
<CacheExpiryInSeconds> elemen
Elemen ini menerapkan TTL pada cache, yang memungkinkan penyesuaian jangka waktu untuk akhir masa berlaku token akses yang di-cache. Rentang yang didukung adalah antara 1 dan 180 detik. Anda dapat menyediakan variabel alur dan variabel default. Jika disediakan, nilai variabel flow akan diprioritaskan daripada nilai default yang ditentukan.
<CacheExpiryInSeconds ref="request.queryparam.cache_expiry">Value 1</CacheExpiryInSeconds>
Default | T/A
Jika Anda menghapus elemen ini, periode habis masa berlaku default untuk token akses yang di-cache adalah 180 detik. |
---|---|
Kehadiran | Opsional |
Jenis | Bilangan bulat |
Nilai valid | Bilangan bulat positif apa pun, bukan nol. Menentukan waktu habis masa berlaku dalam detik. |
Atribut
Tabel berikut menjelaskan atribut elemen <CacheExpiryInSeconds>
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
referensi |
Referensi ke variabel alur yang berisi nilai untuk masa berlaku cache, yang dinyatakan dalam detik. Jika disediakan, nilai variabel flow akan diprioritaskan daripada nilai default yang ditentukan. |
T/A | Opsional |
Skema
Variabel flow
Saat kebijakan Verify API Key diterapkan pada kunci API yang valid, Apigee akan mengisi serangkaian alur variabel. Variabel-variabel ini tersedia untuk kebijakan atau kode yang dieksekusi nanti dalam alur, dan yang sering digunakan untuk melakukan pemrosesan khusus berdasarkan atribut kunci API seperti nama aplikasi, produk API yang digunakan untuk memberi otorisasi pada kunci, atau atribut khusus kunci API.
Kebijakan ini mengisi beberapa jenis variabel alur yang berbeda, termasuk:
- Umum
- Aplikasi
- Developer
- Analytics
- Monetisasi
Setiap jenis variabel alur memiliki awalan yang berbeda. Semua variabel adalah skalar kecuali yang ditunjukkan secara khusus sebagai himpunan (array).
Variabel aliran umum
Tabel berikut mencantumkan variabel alur umum yang diisi oleh kebijakan Verify API Key. Semua variabel ini diawali oleh:
verifyapikey.{policy_name}
Contoh: verifyapikey.{policy_name}.client_id
Variabel yang tersedia meliputi:
Variabel | Deskripsi |
---|---|
client_id |
Kunci konsumen (alias kunci API atau kunci aplikasi) yang diberikan oleh aplikasi yang meminta. |
client_secret |
Rahasia konsumen yang terkait dengan kunci konsumen. |
redirection_uris |
URI pengalihan apa pun dalam permintaan. |
developer.app.id |
ID pengembang atau AppGroup aplikasi yang membuat permintaan. |
developer.app.name |
Nama aplikasi pengembang atau AppGroup aplikasi yang membuat permintaan. |
developer.id |
ID pengembang atau AppGroup terdaftar sebagai pemilik aplikasi yang meminta. |
developer.{custom_attrib_name} |
Atribut khusus apa pun yang berasal dari profil kunci aplikasi. |
DisplayName |
Nilai <DisplayName> kebijakan . |
failed |
Tetapkan ke "true" saat validasi Kunci API gagal. |
{custom_app_attrib} |
Atribut khusus apa pun yang berasal dari profil aplikasi. Tentukan nama pelanggan . |
apiproduct.name* |
Nama produk API yang digunakan untuk memvalidasi permintaan. |
apiproduct.{custom_attrib_name}* |
Atribut khusus apa pun yang berasal dari profil produk API. |
apiproduct.developer.quota.limit* |
Batas kuota yang ditetapkan pada produk API, jika ada. |
apiproduct.developer.quota.interval* |
Interval kuota yang ditetapkan pada produk API, jika ada. |
apiproduct.developer.quota.timeunit* |
Unit waktu kuota yang ditetapkan pada produk API, jika ada. |
* Variabel produk API diisi secara otomatis jika produk API
dengan lingkungan, proxy, dan resource yang valid (berasal dari
proxy.pathsuffix ). Untuk mendapatkan petunjuk tentang cara menyiapkan produk API, lihat
Mengelola produk API. |
Variabel alur aplikasi
Variabel alur berikut yang berisi informasi tentang aplikasi akan diisi oleh kebijakan. Semua variabel ini diawali oleh:
verifyapikey.{policy_name}.app
.
Contoh:
verifyapikey.{policy_name}.app.name
Variabel yang tersedia meliputi:
Variabel | Deskripsi |
---|---|
name |
Nama aplikasi. |
id |
ID aplikasi. |
accessType |
Tidak digunakan oleh Apigee. |
callbackUrl |
URL callback aplikasi. Biasanya hanya digunakan untuk OAuth. |
DisplayName |
Nama tampilan aplikasi. |
status |
Status aplikasi, seperti 'disetujui' atau 'dicabut'. |
apiproducts |
Array berisi daftar produk API yang terkait dengan aplikasi. |
appFamily |
Semua kelompok aplikasi yang berisi aplikasi, atau "default". |
appParentStatus |
Status induk aplikasi, seperti 'aktif' atau 'tidak aktif' |
appType |
Jenis aplikasi adalah "Developer". |
appParentId |
ID aplikasi induk. |
created_at |
Stempel tanggal/waktu saat aplikasi dibuat. |
created_by |
Alamat email developer yang membuat aplikasi. |
last_modified_at |
Tanggal/waktu stempel waktu aplikasi terakhir diupdate. |
last_modified_by |
Alamat email developer yang terakhir kali mengupdate aplikasi. |
{app_custom_attributes} |
Atribut aplikasi khusus apa pun. Tentukan nama atribut khusus. |
Variabel alur AppGroup
Variabel alur berikut yang berisi informasi tentang
AppGroups
akan diisi oleh kebijakan. Atribut AppGroup ini hanya terisi jika
verifyapikey.{policy_name}.app.appType
adalah "AppGroup".
Semua variabel ini diawali oleh:
verifyapikey.{policy_name}.appgroup
.
Contoh:
verifyapikey.{policy_name}.appgroup.name
Variabel yang tersedia meliputi:
Variabel | Deskripsi |
---|---|
name |
Nama AppGroup. |
id |
AppGroup ID. |
displayName |
Nama tampilan AppGroup. |
appOwnerStatus |
Status pemilik aplikasi: 'active', 'inactive', atau 'login_lock'. |
created_at |
Stempel tanggal/waktu saat AppGroup dibuat. |
created_by |
Alamat email developer yang membuat AppGroup. |
last_modified_at |
Stempel tanggal/waktu saat AppGroup terakhir diubah. |
last_modified_by |
Alamat email developer yang terakhir kali mengubah AppGroup. |
{appgroup_custom_attributes} |
Atribut AppGroup kustom apa pun. Tentukan nama atribut khusus. |
Variabel alur developer
Variabel alur berikut yang berisi informasi tentang developer diisi oleh lebih lanjut. Semua variabel ini diawali oleh:
verifyapikey.{policy_name}.developer
Contoh:
verifyapikey.{policy_name}.developer.id
Variabel yang tersedia meliputi:
Variabel | Deskripsi |
---|---|
id |
Mengembalikan {org_name}@@@{developer_id} |
userName |
Nama pengguna developer. |
firstName |
Nama depan developer. |
lastName |
Nama belakang developer. |
email |
Alamat email developer. |
status |
Status developer, sebagai aktif, tidak aktif, atau login_lock. |
apps |
Array aplikasi yang terkait dengan developer. |
created_at |
Stempel tanggal/waktu saat developer dibuat. |
created_by |
Alamat email pengguna yang membuat developer. |
last_modified_at |
Stempel tanggal/waktu saat developer terakhir diubah. |
last_modified_by |
Alamat email pengguna yang mengubah developer. |
{developer_custom_attributes} |
Semua atribut developer kustom. Tentukan nama atribut khusus. |
Variabel Analytics
Variabel berikut secara otomatis diisi di Analytics saat kebijakan Verifikasi Kunci API diterapkan untuk kunci API yang valid. Variabel ini hanya diisi oleh Kunci Verify API dan beberapa kebijakan OAuth.
Variabel dan nilai dapat digunakan sebagai dimensi untuk membuat laporan Analytics guna memperoleh visibilitas terhadap pola konsumsi oleh developer dan aplikasi.
apiproduct.name
developer.app.name
client_id
developer.id
Variabel alur monetisasi
Setelah mengautentikasi pengguna, kebijakan VerifyAPIKey memeriksa semua paket tarif yang dipublikasikan untuk menentukan mana, jika ada, yang aktif berdasarkan waktu aktivasi dan kedaluwarsanya. Jika ditemukan rencana tarif aktif yang dipublikasikan, variabel alur berikut akan terisi:
Variabel | Deskripsi |
---|---|
mint.mintng_is_apiproduct_monetized |
true jika ditemukan paket tarif aktif yang dipublikasikan. |
mint.mintng_rate_plan_id |
ID paket tarif. |
mint.rateplan_end_time_ms |
Waktu habis masa berlaku paket tarif. Contoh: 1619433556408 |
mint.rateplan_start_time_ms |
Waktu aktivasi paket tarif. Contoh: 1618433956209 |
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan, serta variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
Kode kesalahan | Status HTTP | Penyebab |
---|---|---|
keymanagement.service.consumer_key_missing_api_product_association |
400 |
Kredensial aplikasi tidak memiliki pengaitan produk API. Harap kaitkan penerapan kunci dengan produk API. Perhatikan bahwa ini berlaku untuk semua jenis aplikasi, seperti aplikasi developer dan aplikasi AppGroup. |
keymanagement.service.DeveloperStatusNotActive |
401 |
Developer yang membuat Aplikasi Developer yang memiliki kunci API yang Anda gunakan memiliki status tidak aktif. Jika status Developer Aplikasi disetel ke tidak aktif, semua Aplikasi Developer yang dibuat oleh developer tersebut akan dinonaktifkan. Pengguna admin dengan izin yang sesuai (seperti Administrator Organisasi) dapat mengubah status developer dengan cara berikut:
|
keymanagement.service.invalid_client-app_not_approved |
401 |
Aplikasi Developer yang terkait dengan kunci API dicabut. Aplikasi yang dicabut tidak dapat mengakses produk API apa pun dan tidak dapat memanggil API yang dikelola oleh Apigee. Admin org dapat mengubah status Aplikasi Developer menggunakan Apigee API. Lihat Membuat Pasangan Kunci atau Mengupdate Status Aplikasi Developer. |
oauth.v2.FailedToResolveAPIKey |
401 |
Kebijakan ini mengharapkan untuk menemukan kunci API dalam variabel yang ditentukan dalam elemen <APIKey> kebijakan. Error ini muncul jika variabel yang diharapkan tidak ada (tidak dapat diselesaikan). |
oauth.v2.InvalidApiKey |
401 |
Kunci API diterima oleh Apigee, tetapi tidak valid. Saat Apigee mencari kunci dalam database-nya, kunci tersebut harus sama persis dengan kunci yang dikirim dalam permintaan. Jika API sebelumnya berfungsi, pastikan kunci tidak dibuat ulang. Jika kunci dibuat ulang, Anda akan melihat error ini jika mencoba menggunakan kunci lama. Untuk mengetahui detailnya, lihat Mengontrol akses ke API dengan mendaftarkan aplikasi. |
oauth.v2.InvalidApiKeyForGivenResource |
401 |
Kunci API diterima oleh Apigee, dan kunci tersebut valid; tetapi, kunci tersebut tidak cocok dengan kunci yang disetujui di Aplikasi Developer yang terkait dengan proxy API Anda melalui Produk. |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab |
---|---|
SpecifyValueOrRefApiKey |
Elemen <APIKey> belum memiliki nilai atau kunci yang ditentukan. |
Variabel kesalahan
Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | oauthV2.VK-VerifyAPIKey.failed = true |
Contoh respons error
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Contoh aturan fault
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>