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 parçası olarak iletilen herhangi bir IP adresi, Erişim Denetimi Politikası'nın <MatchRule>
öğesi içindeki <SourceAddress>
öğesinde belirtilen IP adresleriyle eşleşirse ve <MatchRule>
öğesinin action
özelliği DENY
olarak ayarlanırsa ortaya çıkar.
Örneğin, <SourceAddress>
aşağıdaki şekilde 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 gösterilir) veya API isteği kapsamında iletilen IP adreslerinden herhangi biriyle eşleşirse hata meydana gelir.
Teşhis
Belirli bir API isteği için erişimi reddedilen IP adreslerini tanımlayın. Bu bilgileri, hata yanıtının
faultstring
öğesinde bulabilirsiniz.Örneğin, aşağıdaki
faultstring
için IP adresi104.132.196.83:
şeklindedir."faultstring": "Access Denied for client ip : 104.132.196.83"
Başarısız API Proxy'sindeki tüm Erişim Denetimi politikalarını inceleyin ve
<SourceAddress>
öğesinde belirtilen IP adreslerininfaultstring
'de (yukarıdaki 1. adım) tanımlanan IP adresleriyle eşleştiği belirli politikayı belirleyin.Örneğin, aşağıdaki politika
<SourceAddress>
IP'sini104.132.196.83,
olarak tanımlar ve bu değerfaultstring
içindeki ile 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, birkaç şekilde yapılabilir:
Kullanıcı Arayüzü İzlemeyi Kullanma
- Başarısız API isteğinin izini yakalayın.
- Sağ taraftaki panelden başarısız olan belirli Erişim Denetimi Politikası'nı seçin.
proxy.client.ip
değişkeninin değerini, aşağıdaki örnek iz ekran görüntüsünde gösterildiği gibi kontrol edin.proxy.client.ip
listede yoksa X-Forwarded-For veya True-Client-IP mesaj başlıklarının değerini kontrol edin.
Özel Raporları kullanma
API proxy'sinde Erişim Denetimi politikası yürütülürken 403 durum kodunun atılıp atılmadığını belirlemek ve istemci IP adresini belirlemek için Özel Raporlar oluşturabilirsiniz. Bu, özellikle sorun geçmişte oluşmuşsa veya ara sıra ortaya çıkıyorsa ve kullanıcı arayüzünde izini yakalayamıyorsanız kullanışlıdır.
Özel raporların nasıl oluşturulacağını anlamak için Özel raporlar oluşturma ve yönetme başlıklı makaleyi inceleyin. Özel raporda şunları seçin:
Metrik olarak Trafik Toplamı ve
Proxy, Response Status Code, Proxy Client IP ve X-Forwarded-For boyutlarını kullanabilirsiniz.
Bu, hataya neden olan istemci IP'sini veya IP adreslerini belirlemenize yardımcı olur.
İstemci IP adresi (
proxy.client.ip
değişkeniyle belirtilir) veya API isteğinin parçası olarak iletilen herhangi bir IP adresi, Erişim Denetimi Politikası'nın<MatchRule>
öğesindeki<SourceAddress>
öğesinde belirtilen IP adresleriyle eşleşiyorsa(action
özelliğininDENY
olarak ayarlandığı) hatanın nedeni budur.Yukarıdaki örnekte,
proxy.client.ip
referans değişkeninde (yukarıdaki izin ekran görüntüsünde görüldüğü gibi) ayarlanan değer, Erişim Denetimi politikasının<SourceAddress>
öğesinde tanımlanan IP adresiyle eşleşir ve bu nedenle hata yanıtını tetikler:"faultstring": "Access Denied for client ip : 104.132.196.83"
Çözünürlük
Erişim Denetimi politikası, faultstring
içinde listelenen belirli IP adreslerinden gelen API isteklerine erişimi reddetmeyi amaçlıyorsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak belirli IP adreslerine belirli bir API proxy'si için API isteklerine erişim izni verilebileceğini belirlerseniz Erişim Denetimi Politikası'nı bu IP adreslerine erişim izni verecek şekilde değiştirin. Alternatif olarak, herhangi bir IP adresine erişimi reddetmek istemiyorsanız API Proxy'sinden Erişim Denetimi Politikası'nı kaldırabilirsiniz.
Yalnızca belirli bir IP adresine (104.132.196.83
) erişim izni verirken geri kalanlar için erişim izni verme işleminin nasıl yapılacağını gösteren bir örneği aşağıda bulabilirsiniz:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>