python - 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)
解决方案
推荐阅读
- c# - 打开模板时Excel标题闪烁
- python - 我如何只获得每个组的新唯一值?
- typescript - NextJS getStaticProps() 从未调用过
- c# - AutoMapper condition Mapping Issue
- dns - Active Diretory domain name same as site
- asp.net - ASP.NET CORE 5 MVC How To Add A New Category Directly From The Site
- javascript - How to use drag and drop between panel to panel in extJS
- jenkins - trigger URL jenkins button rebuild from command line
- azure-data-factory - Azure data factory window function last non-null value
- sql - Select on rows with latest date in a table with no groups