Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
IPDeniedAccess
Hata kodu
accesscontrol.IPDeniedAccess
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}Örnek hata mesajı
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Neden
Bu hata, istemci IP adresi veya API isteğinin bir parçası olarak iletilen herhangi bir IP adresi, Erişim Denetimi Politikası'nın <MatchRule> öğesindeki <SourceAddress> öğesinde belirtilen IP adresleriyle eşleşirse ve <MatchRule> öğesinin action özelliği DENY olarak ayarlanırsa oluşur.
Örneğin, <SourceAddress> öğesinin aşağıdaki gibi tanımlandığını varsayalım:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Yukarıdaki IP adresi, istemci sisteminin IP adresiyle (proxy.client.ip değişkeniyle belirtilir) veya API isteğinin bir parçası olarak iletilen IP adreslerinden herhangi biriyle eşleşirse hata oluşur.
Teşhis
Belirli bir API isteği için erişimi reddedilen IP adreslerini belirleyin. Bu bilgileri hata yanıtının
faultstringöğesinde bulabilirsiniz.Örneğin, aşağıdaki
faultstringiçinde IP adresi104.132.196.83:'dir."faultstring": "Access Denied for client ip : 104.132.196.83"Başarısız olan API proxy'sindeki tüm erişim kontrolü politikalarını inceleyin ve
<SourceAddress>öğesinde belirtilen IP adreslerinin,faultstringöğesinde tanımlanan IP adresleriyle eşleştiği politikayı belirleyin (yukarıdaki 1. adım).Örneğin, aşağıdaki politika
<SourceAddress>IP'sini104.132.196.83,olarak tanımlar. Bu,faultstringiçindekiyle eşleşir:<?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>API isteğinin yapıldığı IP adreslerini belirleyin. Bu işlem birden fazla şekilde yapılabilir:
UI Trace'i kullanma
- Başarısız olan API isteğinin izini yakalayın.
- Sağ taraftaki panelden başarısız olan belirli Erişim Kontrolü Politikası'nı seçin.
Örnek izlemenin aşağıdaki ekran görüntüsünde gösterildiği gibi
proxy.client.ipdeğişkeninin değerini kontrol edin.
proxy.client.iplistelenmiyorsa X-Forwarded-For veya True-Client-IP ileti üstbilgilerinin değerini kontrol edin.
Özel Raporları kullanma
API proxy'sinde erişim denetimi politikası yürütülürken 403 durum kodu verilip verilmediğini ve istemci IP adresini belirlemek için özel raporlar oluşturabilirsiniz. Bu, özellikle sorun geçmişte yaşandıysa veya aralıklı olarak yaşanıyorsa ve kullanıcı arayüzünde izlemeyi yakalayamıyorsanız yararlıdır.
Özel rapor oluşturma hakkında bilgi edinmek için Özel rapor oluşturma ve yönetme başlıklı makaleyi inceleyin. Özel raporda şunları seçin:
Metrik olarak Trafik Toplamı ve
Proxy, Yanıt Durumu Kodu, Proxy İstemci IP'si ve X-Forwarded-For boyut olarak.
Bu, hataya neden olan istemci IP'sini veya iletilen IP adreslerini belirlemenize yardımcı olur.
İstemci IP adresi (
proxy.client.ipdeğişkeniyle belirtilir) veya API isteğinin bir parçası olarak iletilen herhangi bir IP adresi, Erişim Kontrolü Politikası'nın<MatchRule>öğesindeki<SourceAddress>öğesinde belirtilen IP adresleriyle eşleşiyorsa(actionözelliğiDENYolarak ayarlanmışsa) hatanın nedeni budur.Yukarıda gösterilen örnekte, referans değişkeninde
proxy.client.ipayarlanan değer (yukarıdaki izleme ekran görüntüsünde görüldüğü gibi), Erişim Kontrolü politikasının<SourceAddress>öğesinde tanımlanan IP adresiyle eşleştiği için hata yanıtı tetikleniyor:"faultstring": "Access Denied for client ip : 104.132.196.83"
Çözünürlük
Erişim kontrolü politikası, faultstring içinde listelenen belirli IP adreslerinden gelen API isteklerine erişimi engellemek için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak belirli IP adreslerinin, belirli API proxy'si için API isteklerine erişebileceğini belirlerseniz Erişim Denetimi Politikası'nı bu IP adreslerine erişime izin verecek şekilde değiştirin. Alternatif olarak, herhangi bir IP adresine erişimi engellemek istemiyorsanız erişim denetimi politikasını API proxy'sinden kaldırabilirsiniz.
Aşağıda, 104.132.196.83 yalnızca belirli bir IP adresine erişime nasıl izin verileceğini ve diğer IP adreslerinin erişiminin nasıl engelleneceğini gösteren bir örnek verilmiştir:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>