Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. 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>
öğesi içindeki <SourceAddress>
öğesinde belirtilen herhangi bir IP adresiyle eşleşirse ve <MatchRule>
öğesinin action
özelliği DENY
olarak ayarlanmışsa ortaya çıkar.
Örneğin, <SourceAddress>
öğesinin aşağıda gösterildiği gibi tanımlandığını varsayalım:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Yukarıdaki IP adresi, istemci sisteminin (proxy.client.ip
değişkeniyle gösterilir) IP adresiyle 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 tanımlayın. Bu bilgileri, hata yanıtının
faultstring
öğesinde bulabilirsiniz.Örneğin, aşağıdaki
faultstring
öğesinde IP adresi:104.132.196.83:
"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
bölümünde (yukarıdaki 1. adım) belirtilen IP adresleriyle eşleştiği özel politikayı belirleyin.Örneğin, aşağıdaki politika
<SourceAddress>
IP'sinifaultstring
ile eşleşen104.132.196.83,
olarak tanımlar:<?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 birden fazla şekilde yapılabilir:
Kullanıcı Arayüzü İzlemeyi Kullanma
- Başarısız API isteğinin izini yakalayın.
- Sağ taraftaki panelde, başarısız olan Erişim Denetimi Politikası'nı seçin.
Aşağıdaki örnek iz ekran görüntüsünde gösterildiği gibi
proxy.client.ip
değişkeninin değerini kontrol edin.proxy.client.ip
listede yoksa X-Forwarded-For veya True-Client-IP ileti üstbilgileri.
Özel Raporları kullanma
API proxy'sinde Erişim Denetimi politikası yürütülürken bir 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 meydana geldiyse veya sorun ara sıra oluyorsa ve kullanıcı arayüzünde izini yakalayamıyorsanız yararlı olur.
Özel raporları nasıl oluşturacağınızı öğrenmek için Özel raporlar oluşturma ve yönetme başlıklı makaleyi inceleyin. Özel raporda şunları seçin:
Metrik olarak Trafik Toplamı ve
Boyut olarak Proxy, Yanıt Durum Kodu, Proxy İstemci IP ve X-Yönlendirilmiş-For.
Bu sayede hataya neden olan istemci IP'sini veya IP adreslerini belirleyebilirsiniz.
İstemci IP adresi (
proxy.client.ip
değişkeni tarafından belirtilir) veya API isteğinin bir parçası olarak iletilen herhangi bir IP adresi,action
özelliğininDENY
olarak ayarlandığı Erişim Denetimi Politikası'nın<MatchRule>
öğesindeki<SourceAddress>
öğesinde belirtilen IP adresleriyle eşleşiyorsa hatanın nedeni budur.Yukarıda gösterilen örnekte,
proxy.client.ip
referans değişkeninde ayarlanan değer (yukarıdaki izinin ekran görüntüsünde görüldüğü gibi), Erişim Denetimi politikasının<SourceAddress>
öğesinde tanımlanan IP adresiyle eşleşir ve böylece hata yanıtını tetikler:"faultstring": "Access Denied for client ip : 104.132.196.83"
Çözünürlük
Erişim Denetimi politikasının, faultstring
içinde listelenen belirli IP adreslerinden gelen API isteklerine erişimi reddetmesi isteniyorsa hata mesajı beklenir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.
Ancak belirli IP adreslerine, belirli API Proxy'si için API isteklerine erişim izni verilebileceğini belirlerseniz, Erişim Denetimi Politikası'nı söz konusu 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.
Aşağıda, yalnızca belirli bir IP adresine (104.132.196.83
) erişim izni verirken diğerleri için de erişimin nasıl reddedileceğ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>