Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
IPDeniedAccess
Kod błędu
accesscontrol.IPDeniedAccess
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Przyczyna
Ten błąd występuje, jeśli adres IP klienta lub dowolny adres IP przekazany w ramach żądania do interfejsu API pasuje do dowolnego adresu IP określonego w elemencie <SourceAddress> w elemencie <MatchRule> zasady kontroli dostępu, a atrybut action elementu <MatchRule> jest ustawiony na DENY.
Załóżmy na przykład, że element <SourceAddress> jest zdefiniowany w ten sposób:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Jeśli powyższy adres IP pasuje do adresu IP systemu klienta (wskazywanego przez zmienną proxy.client.ip) lub do dowolnego adresu IP przekazanego w ramach żądania do interfejsu API, wystąpi błąd.
Diagnostyka
Określ adresy IP, którym odmówiono dostępu do konkretnego żądania do interfejsu API. Te informacje znajdziesz w elemencie
faultstringodpowiedzi na błąd.Na przykład w tym elemencie
faultstringadres IP to104.132.196.83:"faultstring": "Access Denied for client ip : 104.132.196.83"Sprawdź wszystkie zasady kontroli dostępu w nieudanym serwerze proxy interfejsu API i określ konkretną zasadę, w której adresy IP określone w elemencie
<SourceAddress>pasują do adresów IP zidentyfikowanych w elemenciefaultstring(krok 1 powyżej).Na przykład ta zasada definiuje adres IP
<SourceAddress>jako104.132.196.83,, który pasuje do elementufaultstring:<?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>Określ adresy IP, z których wysłano żądanie do interfejsu API. Możesz to zrobić na kilka sposobów:
Korzystanie ze śledzenia w interfejsie
- Zarejestruj ślad nieudanego żądania do interfejsu API.
- W panelu po prawej stronie wybierz konkretną zasadę kontroli dostępu, która się nie powiodła.
Sprawdź wartość zmiennej
proxy.client.ip, jak pokazano na tym zrzucie ekranu przykładowego śladu.
Jeśli zmienna
proxy.client.ipnie jest wymieniona, sprawdź wartość nagłówków wiadomości X-Forwarded-For lub True-Client-IP.
Korzystanie z raportów niestandardowych
Możesz tworzyć raporty niestandardowe, aby sprawdzić, czy podczas wykonywania zasady kontroli dostępu w serwerze proxy interfejsu API został zwrócony kod stanu 403, a także określić adres IP klienta. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości lub jeśli występuje sporadycznie i nie możesz zarejestrować śladu w interfejsie.
Aby dowiedzieć się, jak tworzyć raporty niestandardowe, przeczytaj artykuł Tworzenie raportów niestandardowych i zarządzanie nimi. W raporcie niestandardowym wybierz:
Suma wizyt jako dane,
Serwer proxy, Kod stanu odpowiedzi, Adres IP klienta serwera proxy i X-Forwarded-For jako wymiary.
Pomoże Ci to określić adres IP klienta lub adresy IP, które spowodowały błąd.
Jeśli adres IP klienta (wskazywany przez zmienną
proxy.client.ip) lub dowolny adres IP przekazany w ramach żądania do interfejsu API pasuje do adresów IP określonych w elemencie<SourceAddress>w elemencie<MatchRule>zasady kontroli dostępu, a atrybutactionjest ustawiony naDENY, to jest to przyczyna błędu.W przykładzie powyżej wartość ustawiona w zmiennej odniesienia
proxy.client.ip(widoczna na zrzucie ekranu śladu powyżej) pasuje do adresu IP zdefiniowanego w elemencie<SourceAddress>zasady kontroli dostępu, co powoduje wygenerowanie odpowiedzi na błąd:"faultstring": "Access Denied for client ip : 104.132.196.83"
Rozwiązanie
Jeśli zasada kontroli dostępu ma na celu odrzucanie żądań do interfejsu API pochodzących z określonych adresów IP wymienionych w elemencie faultstring, komunikat o błędzie jest oczekiwany. W takim przypadku nie trzeba podejmować żadnych dodatkowych działań.
Jeśli jednak stwierdzisz, że określone adresy IP mogą mieć dostęp do żądań do interfejsu API dla konkretnego serwera proxy interfejsu API, zmodyfikuj zasadę kontroli dostępu, aby zezwolić na dostęp do tych adresów IP. Możesz też usunąć zasadę kontroli dostępu z serwera proxy interfejsu API, jeśli nie chcesz odmawiać dostępu do żadnych adresów IP.
Oto przykład, który pokazuje, jak zezwolić na dostęp tylko do konkretnego adresu IP 104.132.196.83 i odmówić dostępu do pozostałych:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>