Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
IPDeniedAccess
Mã lỗi
accesscontrol.IPDeniedAccess
Nội dung phản hồi lỗi
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}Thông báo lỗi mẫu
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu địa chỉ IP của máy khách hoặc bất kỳ địa chỉ IP nào được truyền dưới dạng một phần của yêu cầu API khớp với(các) địa chỉ IP được chỉ định trong phần tử <SourceAddress> trong phần tử <MatchRule> của Chính sách kiểm soát quyền truy cập và thuộc tính action của phần tử <MatchRule> được đặt thành DENY.
Ví dụ: giả sử <SourceAddress> được xác định như minh hoạ dưới đây:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Nếu địa chỉ IP ở trên khớp với địa chỉ IP của hệ thống máy khách (được biểu thị bằng biến proxy.client.ip) hoặc bất kỳ địa chỉ IP nào được truyền dưới dạng một phần của yêu cầu API, thì lỗi sẽ xảy ra.
Chẩn đoán
Xác định(các) địa chỉ IP bị từ chối quyền truy cập cho một yêu cầu API cụ thể. Bạn có thể tìm thấy thông tin này trong phần tử
faultstringcủa phản hồi lỗi.Ví dụ: trong
faultstringsau đây, địa chỉ IP là104.132.196.83:"faultstring": "Access Denied for client ip : 104.132.196.83"Kiểm tra tất cả các chính sách Kiểm soát quyền truy cập trong API Proxy không thành công và xác định chính sách cụ thể mà(các) địa chỉ IP được chỉ định trong phần tử
<SourceAddress>khớp với(các) địa chỉ IP được xác định trongfaultstring(Bước 1 ở trên).Ví dụ: chính sách sau đây xác định IP
<SourceAddress>là104.132.196.83,, khớp với IP trongfaultstring:<?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>Xác định(các) địa chỉ IP mà từ đó yêu cầu API được thực hiện. Bạn có thể thực hiện việc này theo nhiều cách:
Sử dụng tính năng Theo dõi giao diện người dùng
- Ghi lại dấu vết cho yêu cầu API không thành công.
- Chọn Chính sách kiểm soát quyền truy cập cụ thể không thành công trong bảng điều khiển bên phải.
Kiểm tra giá trị của biến
proxy.client.ipnhư trong ảnh chụp màn hình sau đây về một dấu vết mẫu.
Nếu
proxy.client.ipkhông có trong danh sách, hãy kiểm tra giá trị của tiêu đề thông báo X-Forwarded-For hoặc True-Client-IP.
Sử dụng báo cáo tùy chỉnh
Bạn có thể tạo Báo cáo tuỳ chỉnh để xác định xem mã trạng thái 403 có được gửi trong quá trình thực thi chính sách Kiểm soát quyền truy cập trong proxy API hay không, đồng thời xác định địa chỉ IP của máy khách. Điều này đặc biệt hữu ích nếu vấn đề đã xảy ra trong quá khứ hoặc nếu vấn đề xảy ra không liên tục và bạn không thể ghi lại dấu vết trong giao diện người dùng.
Hãy tham khảo bài viết Tạo và quản lý báo cáo tuỳ chỉnh để tìm hiểu cách tạo báo cáo tuỳ chỉnh. Trong báo cáo tuỳ chỉnh, hãy chọn:
Tổng lưu lượng truy cập dưới dạng một Chỉ số và
Proxy, Response Status Code, Proxy Client IP và X-Forwarded-For dưới dạng phương diện.
Điều này sẽ giúp bạn xác định IP máy khách hoặc các địa chỉ IP đã truyền dẫn đến lỗi.
Nếu địa chỉ IP của ứng dụng (được biểu thị bằng biến
proxy.client.ip) hoặc bất kỳ địa chỉ IP nào được truyền dưới dạng một phần của yêu cầu API khớp với(các) địa chỉ IP được chỉ định trong phần tử<SourceAddress>trong phần tử<MatchRule>của Chính sách kiểm soát quyền truy cập, trong đó thuộc tínhactionđược đặt thànhDENY, thì đó là nguyên nhân gây ra lỗi.Trong ví dụ minh hoạ ở trên, giá trị được đặt trong biến tham chiếu
proxy.client.ip(như trong ảnh chụp màn hình của dấu vết ở trên) khớp với địa chỉ IP được xác định trong phần tử<SourceAddress>của chính sách Kiểm soát quyền truy cập, do đó kích hoạt phản hồi lỗi:"faultstring": "Access Denied for client ip : 104.132.196.83"
Độ phân giải
Nếu chính sách Kiểm soát quyền truy cập nhằm mục đích từ chối quyền truy cập vào các yêu cầu API đến từ(các) địa chỉ IP cụ thể được liệt kê trong faultstring, thì thông báo lỗi sẽ xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng(các) địa chỉ IP cụ thể có thể được cấp quyền truy cập vào các yêu cầu API cho API Proxy cụ thể, thì hãy sửa đổi Chính sách kiểm soát quyền truy cập để cho phép truy cập vào(các) địa chỉ IP đó. Ngoài ra, bạn có thể xoá Chính sách kiểm soát quyền truy cập khỏi API Proxy nếu không muốn từ chối quyền truy cập vào(các) địa chỉ IP.
Sau đây là ví dụ cho thấy cách chỉ cho phép truy cập vào một địa chỉ IP cụ thể 104.132.196.83 và từ chối quyền truy cập cho những địa chỉ còn lại:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>