web-dev-qa-db-ja.com

opscenter REST認証が有効な場合のAPI

this に従って、opscenterノードで認証を有効にしました。 Opscenter python APIを介してopscenterアクションを定期的に呼び出すRESTスクリプトがあります。REST APIドキュメントから、基本HTTP認証を使用してこれらのメソッドを呼び出すだけのように見えました( this を参照)。しかし、これらの呼び出しは常に「ユーザーはログインする必要があります」というエラーで失敗しました。

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です

3

あなたはそれを正しく理解しました、OpsCenter5.1は基本認証の代わりにセッションを使用します。あなたは5.0のドキュメントを見てきました、それがそれが文書化されなかった理由です。これが正しい リンク です。

1
arre

そのメソッドを実装するときにユーザー「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
0
markc