PythonのRequest Libraryを使用してHueにログインする

Published on 22 July 2016 in Hue 3.11 / Programming / SDK / Security / User Admin - 2 minutes read - Last modified on 06 March 2021

PythonのRequest Libraryを使用してHueにログインする方法をこの小さなスニペットで紹介します。

HueはDjango Web Frameworkに依存しています。 Djangoにはユーザ認証システムがあります。Djangoはリクエストオブジェクトへの認証システムをフックするためにセッションとミドルウェアを使用します。Hueは認証するために「ユーザー名(username)」と「パスワード(password)」、「csrftoken」フォーム変数を使用する認証フォームを備えています。

このコードスニペットでは、よく知られているpythonの「リクエスト 」ライブラリを使用します。最初 GET “login_url” によりcsrftoken を獲得します。 “username”、”password”、”cfrftoken”および”next_url”が含まれているフォームデータのpythonディクショナリと”Referer”を含むヘッダのpythonディクショナリ、およびcookie用の空のpythonディクショナリを作成します。”login_url”へのPOSTリクエストの後、ステータスを取得します。r.status_code をチェックします。もしr.status_code!=200 の場合、ユーザ名またはパスワードに問題があります。

リクエストが成功したらその後のリクエストのためにヘッダとcokkieをキャプチャします。cookies=session.cookiesとheaders=session.headersを渡すことにより 、後続のrequest.session呼び出しを行うことができます。

import requests

def login_djangosite():
 next_url = "/"
 login_url = "http://localhost:8888/accounts/login?next=/"

 session = requests.Session()
 r = session.get(login_url)
 form_data = dict(username="[your hue username]",password="[your hue password]",
                  csrfmiddlewaretoken=session.cookies['csrftoken'],next=next_url)
 r = session.post(login_url, data=form_data, cookies=dict(), headers=dict(Referer=login_url))

 # check if request executed successfully?
 print r.status_code

 cookies = session.cookies
 headers = session.headers

 r=session.get('http://localhost:8888/metastore/databases/default/metadata',
 cookies=session.cookies, headers=session.headers)
 print r.status_code

 # check metadata output
 print r.text

comments powered by Disqus

More recent stories

10 June 2021
Hue4.10(新しいSQLエディタコンポーネント、REST API、小さなファイルのインポート、Slackアプリなど)がリリースされました!
Read More
29 May 2021
Sqlスクラッチパッドコンポーネントとパブリック REST API を使用して、5 分で独自の SQL エディター (BYOE) を構築する
Read More
26 May 2021
改善されたHueのImporter -- ファイルの選択、方言の選択、テーブルの作成
Read More