为什么我在使用 tetpyclient 发出 POST 请求时收到 403 错误?

Why am I getting a 403 error when making a POST request using tetpyclient?

尝试使用他们的 tetpyclient 在 Cisco 的 Tetration API 中发出 POST 请求。我在使用 get 请求时收到 200 响应,但在使用 json 过滤器发出 POST 请求以查询流时收到 403。 json 数据的语法是否不正确,或者 python 中是否存在语法错误?

from tetpyclient import RestClient
import urllib3
import json
import requests
from datetime import datetime
from flask import *
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

API_ENDPOINT = "https://"
restclient = RestClient(API_ENDPOINT, credentials_file = 'path/to/credentials.json', verify = False)
get = restclient.get("/flowsearch/metrics")
print (get.status_code) ##to test if api can be reached

req_payload = {"t0": "2020-08-01T09:00:00-0700",
               "t1": "2020-08-01T10:00:00-0700",
               "scopeName": "Default",
               "limit": 10,
               "filter": {                  
                  "type": "and",
                  "filters": [
                     {"type": "eq", "field": "src_address","value": "00.000.0.000" },
                     {"type": "eq", "field": "dst_address","value": "000.000.00.00" }
                   ]
}
}

resp = restclient.post('/flowsearch', json_body=json.dumps(req_payload))

print(resp.content)
print (resp.status_code)

if resp.status_code == 200:
   parsed_resp = json.loads(resp.content)
   print (json.dumps(parsed_resp, indent=4, sort_keys=True))

感谢所有反馈! 这是 link 到 tetration api 文档:https://www.cisco.com/c/en/us/td/docs/security/workload_security/tetration-analytics/sw/config/b_Tetration_OpenAPI/m_flow-search.html

The HTTP 403 is a HTTP status code meaning access to the requested resource is forbidden for some reason

您使用的凭据似乎不允许调用 /flowsearch