我按照这个在opscenter节点上启用了身份validation。 我有一个python脚本,通过Opscenter REST API定期调用opscenter动作。 从REST API文档看来,我所要做的就是使用基本的HTTPauthentication来调用这些方法(参见本文 )。 但是这些调用总是失败,“用户必须login”错误。
在我使用opscenter的web前端时,我发现我必须实际调用login方法创build一个会话并使用该会话来调用其他方法,比如:
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 auth)是错误的吗? 还是我做错了什么? 我使用的opscenter版本是5.1.1
您正确地计算出了它,OpsCenter 5.1使用会话而不是基本身份validation。 你一直在看5.0文档,这就是为什么没有logging。 这是一个正确的链接 。
除了文档链接之外,用户“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