web-dev-qa-db-ja.com

Base64認証Python

私はAPIをフォローしていますが、ユーザーIDとパスワードのBase64認証を使用する必要があります。

「ユーザーIDとパスワードの両方を連結してからBase64エンコードする必要があります」

次に例を示します

'userid:password'

次に、「「認証ヘッダー」にエンコードされた値を提供する」と言います。

'たとえば:Authorization:BASIC {Base64-encoded value}'

これをpython apiリクエストに書き込むにはどうすればよいですか?

z = requests.post(url, data=zdata )

ありがとう

25
Marcus

以下を実行して、データをエンコードし、リクエストを行うことができます。

import requests, base64

usrPass = "userid:password"
b64Val = base64.b64encode(usrPass)
r=requests.post(api_URL, 
                headers={"Authorization": "Basic %s" % b64Val},
                data=payload)

Authorizationフィールドに「BASIC」ワードを追加する必要があるかどうかはわかりません。 APIリンクを提供すると、より明確になります。

37
Alfageme

要求ライブラリには Basic Authサポート があり、自動的にエンコードされます。 python replで次を実行することでテストできます

from requests.auth import HTTPBasicAuth
r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload)

次を入力して、このエンコードを確認できます。

r.request.headers['Authorization']

出力:

u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'
55
Josh

Python3で私のために働いている解決策を見つけました:

userpass = username+":"+password
endcoded_u = base64.b64encode(userpass.encode("ascii")).decode("ascii")
headers = {"Authorization" : "Basic %s" % encoded_u} 
0
Michal Lis