Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat
dokumentasi Apigee Edge.
IPDeniedAccess
Kode error
accesscontrol.IPDeniedAccess
Isi respons error
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Contoh pesan error
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Penyebab
Error ini terjadi jika alamat IP klien, atau alamat IP apa pun yang diteruskan sebagai bagian dari permintaan API, cocok dengan alamat IP apa pun yang ditentukan di elemen <SourceAddress>
dalam elemen <MatchRule>
Kebijakan Kontrol Akses, dan atribut action
dari elemen <MatchRule>
disetel ke DENY
.
Misalnya, <SourceAddress>
ditentukan seperti yang ditunjukkan di bawah ini:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Jika alamat IP di atas cocok dengan alamat IP sistem klien (ditunjukkan oleh variabel proxy.client.ip
), atau salah satu alamat IP yang diteruskan sebagai bagian dari permintaan API, error akan terjadi.
Diagnosis
Mengidentifikasi alamat IP yang ditolak akses untuk permintaan API tertentu. Anda dapat menemukan informasi ini dalam elemen
faultstring
respons error.Misalnya, dalam
faultstring
berikut, alamat IP-nya adalah104.132.196.83:
"faultstring": "Access Denied for client ip : 104.132.196.83"
Periksa semua kebijakan Kontrol Akses di Proxy API yang gagal dan tentukan kebijakan spesifik ketika alamat IP yang ditentukan di elemen
<SourceAddress>
cocok dengan alamat IP yang diidentifikasi difaultstring
(Langkah 1 di atas).Misalnya, kebijakan berikut menentukan IP
<SourceAddress>
sebagai104.132.196.83,
yang cocok dengan yang ada difaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control"> <DisplayName>Access-Control</DisplayName> <Properties/> <IPRules noRuleMatchAction="ALLOW"> <MatchRule action="DENY"> <SourceAddress mask="32">104.132.196.83</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Menentukan alamat IP tempat permintaan API dibuat. Tindakan ini dapat dilakukan dengan beberapa cara:
Menggunakan Rekaman Aktivitas UI
- Mengambil rekaman aktivitas untuk permintaan API yang gagal.
- Pilih Kebijakan Kontrol Akses tertentu yang gagal dari panel sebelah kanan.
Di panel Phase Details, periksa nilai variabel
proxy.client.ip
seperti yang ditunjukkan di screenshot contoh rekaman aktivitas berikut.Jika
proxy.client.ip
tidak tercantum, periksa nilai header pesan X-Forwarded-For atau True-Client-IP.
Menggunakan Laporan Kustom
Anda dapat membuat Laporan Kustom untuk menentukan apakah kode status 403 dilempar selama eksekusi kebijakan Kontrol Akses dalam proxy API dan juga menentukan alamat IP klien. Hal ini sangat berguna jika masalah sebelumnya sudah terjadi atau jika masalah sesekali terjadi dan Anda tidak dapat menangkap rekaman aktivitas di UI.
Lihat Membuat dan mengelola laporan kustom untuk memahami cara membuat laporan kustom. Di laporan kustom, pilih:
Jumlah Traffic sebagai Metrik, dan
Proxy, Response Status Code, Proxy Client IP, dan X-Forwarded-For-IP sebagai Dimensi.
Hal ini akan membantu Anda menentukan IP klien atau alamat IP yang diteruskan yang menyebabkan error.
Jika alamat IP klien (ditunjukkan oleh variabel
proxy.client.ip
), atau alamat IP apa pun yang diteruskan sebagai bagian dari permintaan API, sesuai dengan alamat IP yang ditentukan di elemen<SourceAddress>
dalam elemen<MatchRule>
Kebijakan Kontrol Akses, dengan atributaction
disetel keDENY
, maka itulah penyebab error.Pada contoh yang ditampilkan di atas, nilai yang ditetapkan dalam variabel referensi
proxy.client.ip
(seperti yang terlihat di screenshot rekaman aktivitas di atas) cocok dengan alamat IP yang ditentukan dalam elemen<SourceAddress>
kebijakan Kontrol Akses, sehingga memicu respons error:"faultstring": "Access Denied for client ip : 104.132.196.83"
Resolusi
Jika kebijakan Kontrol Akses dimaksudkan untuk menolak akses ke permintaan API yang berasal dari alamat IP tertentu yang tercantum di faultstring
, akan muncul pesan error. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.
Namun, jika Anda menentukan bahwa alamat IP tertentu dapat diberi akses ke permintaan API untuk Proxy API tertentu, ubah Kebijakan Kontrol Akses untuk mengizinkan akses ke alamat IP tersebut. Atau, Anda dapat menghapus Kebijakan Kontrol Akses dari Proxy API jika tidak ingin menolak akses ke alamat IP mana pun.
Berikut adalah contoh yang menunjukkan cara mengizinkan akses hanya ke Alamat IP tertentu 104.132.196.83
dan menolak akses untuk alamat lainnya:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>