我按照以下说明在 opscenter 节点上启用了身份验证这。我有一个 Python 脚本,它定期通过 Opscenter REST API 调用 opscenter 操作。从 REST API 文档来看,我所要做的就是使用基本 HTTP 身份验证调用这些方法(请参阅这)但这些调用总是失败并出现“用户必须登录”错误。
在研究了使用 opscenter 的 Web 前端时运行的 javascript 之后,我发现我必须实际调用登录方法来创建会话并使用该会话来调用其他方法,例如:
session = requests.Session()
login_body = '{"username": "%s", "password": "%s"}' % (opsc_uname, opsc_pwd)
login_resp = session.post("http://{url}/login".format(url=opsc_url), data=login_body).json()
clusterconf = session.get("http://{url}/cluster-configs".format(url=opsc_url)).json()
api 文档(声称使用基本 http 身份验证)有误吗?还是我做错了什么?我使用的 opscenter 版本是 5.1.1
答案1
您猜对了,OpsCenter 5.1 使用会话而不是基本身份验证。您一直在查看 5.0 文档,这就是为什么它没有记录的原因。以下是正确的关联。
答案2
除了用户“arre”在上面发布的文档链接之外,当您实现该方法时,请确保不包含{}花括号,例如使用
curl -H 'opscenter-session: d6c5e198b9b5ffeab9fd8dea6fb012aa' http://127.0.0.1:8888/permissions/user
代替
curl -H 'opscenter-session: {d6c5e198b9b5ffeab9fd8dea6fb012aa}' http://127.0.0.1:8888/permissions/user