python - Zscaler api 使用 Python 进行身份验证
问题描述
我正在尝试使用 API 向 Zscaler 进行身份验证。通过阅读文档并遵循以下站点中的示例
我写了以下代码:
import time
import http.client
import json
def obfuscate_api_key():
seed = 'myActualKey'
time_now = int(time.time() * 1000)
n = str(time_now)[-6:]
r = str(int(n) >> 1).zfill(6)
obf_key = ""
for i in range(0, len(str(n)), 1):
obf_key += seed[int(str(n)[i])]
for j in range(0, len(str(r)), 1):
obf_key += seed[int(str(r)[j]) + 2]
return time_now, obf_key
now, key = obfuscate_api_key()
conn = http.client.HTTPSConnection('zsapi.zscalertwo.net')
payload = {"username": "my@username.com", "password":"mypassword", "apiKey": key,
"timestamp": now}
headers = {
'content-type': "application/json",
'cache-control': "no-cache"
}
conn.request("POST", "/api/v1/authenticatedSession", json.dumps(payload), headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
但是,我不断收到以下消息:
{"code":"AUTHENTICATION_FAILED","message":"AUTHENTICATION_FAILED"}
我的凭据是正确的,因为我使用它们在 Web GUI 中进行身份验证。因为我有一个 api 密钥,所以我有必要的特权来使用 api。主机名也是正确的,这就是我用来从浏览器登录的。我也试过 admin.zscalertwo.net 但结果是一样的。任何可能导致此问题的想法都将受到欢迎。谢谢!
解决方案
您可能已经解决了这个问题,但是添加更多信息以防有人碰到这个问题。
您的代码没有任何问题 - 使用有效凭据可以正常工作。
将返回三个条件AUTHENTICATION_FAILED
,它们是:
- 用户名不正确
- 密码错误
- Zscaler 云 URL 不正确
不正确的用户名格式将返回:
{"code":"INVALID_USERNAME_OR_PASSWORD","message":"INVALID_USERNAME_OR_PASSWORD"}
不正确的 API 密钥或时间戳将返回:
{"code":"INVALID_API_KEY","message":"INVALID_API_KEY"}
我建议您查看pyZscaler(我是作者),这是一个用于 Zscaler API 的 Python SDK,您可能会发现它很有用。
推荐阅读
- android - 将多个传感器数据保存到 sqlite 数据库
- swift - 使用数组和 Firebase
- javascript - 如何获取 JavaScript 全局变量并将其发送到 php 文件中?
- groovy - Azure 架构扩展 - 错误消息:对象引用未设置为对象的实例
- python - 代码实现在不需要时自动变量
- php - 如何轻松注释 PHP+HTML 代码
- xml - 如何在 ImportXML 的 URL 中包含 Google 表格单元格引用
- php - 存储第一页的数据并在第二页使用它而不使用 PHP GET
- python - 从网上下载 ZIP 文件 (Python)
- c# - 从已知宽度和高度的字节数组计算坐标的 X 和 Y