首页 > 解决方案 > REST API 的 Python 请求令牌不断返回 401 无法确定正确的令牌格式

问题描述

我在 Powershell 中有这个工作,但我试图弄清楚如何让它在 Python 中工作。在 Powershell 我只是使用

$webclient.Headers.Add("Authorization", "Basic $auth")

将我的用户名和密码组合的 b64Val 传递给 $auth,然后获取我的令牌字符串并再次使用 Authorization 和 Basic 将其传递为相同的格式,其中 $auth 包含我的长令牌字符串。

但是,我一直在 python 中返回 401,试图弄清楚如何做同样的事情。这是我的示例 python 代码,第一个获取 My_token 的请求工作正常。

password = 'myPassword'
usrPass = "admin:" + password

b64Val = base64.b64encode(usrPass.encode("ascii")).decode("ascii")
My_token=requests.get("https://10.10.1.2/api/login",headers={"Authorization" : "Basic %s" % b64Val}, verify=False)

token_contents = My_token.content.decode("utf-8").replace('"', '')

#token_test = 'Token ' + token_contents
token_test = 'token ' + token_contents
#token_test = 'TOK:' + token_contents
#token_test = 'Basic ' + token_contents
#token_test = 'token=' + token_contents

header = {'Authorization' : token_test}

url = 'https://10.10.1.2/api/types/instances'
r = requests.get(url, headers=header, verify=False)

请参阅我的评论行,我尝试了所有不同类型的令牌设置。

我的想法是我必须将令牌从字节转换为字符串并从中删除双引号,My_token.content 原始值属性看起来像这样。

b'"YWRtaW46MTU2OTE4NzkwMgg3NzpjZDdlZWEyNmI2NDJmOTY0ZmI5ZGQ3YzBiNnI2ZTNlZQ"'

只是想弄清楚我对 My_token 对象的误解,该对象工作正常并让我登录,然后在我尝试执行的下一个请求中返回令牌。谢谢

[更新和修复]

多亏了 stovfl 的评论,我才能够了解更多并看到我的错误。我想多了,让它变得比需要的更复杂;)。我只需要亲吻并使用我的令牌内容进行基本身份验证,哈哈。

r_test = requests.get(' https://10.10.1.2/api/types/instances ', auth=("admin", token_contents), verify=False)

标签: pythonaccess-token

解决方案


推荐阅读