我正在尝试对auth令牌进行编码并将其传递给restapi,这在powershell中可以正常工作,但是将相同的方法应用于python脚本会引发“unauthorized”异常。在
我怀疑编码值有问题。无法找到解决方案。有什么想法吗?在
rest端点是IBM uDeploy。在
Powershell
$tokenEncoded = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes( "PasswordIsAuthToken:{`"token`":`"$pass`"}" ))
$basicAuthValue = "Basic $tokenEncoded"
$headers = @{}
$headers.Add("Authorization", $basicAuthValue)
$response = Invoke-RestMethod -Method Put -Headers $headers -Uri $requestUri -Body $jsonRequest
Python
^{pr2}$
您发送的是文本字符串
$password
作为令牌,而不是名为password
的变量的内容。在您只需要在基本的Auth HTTP头中包含
PasswordIsAuthToken
和您的令牌(PasswordIsAuthToken
构成用户名,token
是密码):如果您真的需要将令牌包装在一个类似JSON的结构中,那么您需要使用字符串格式(Powershell代码也这样做,但是您省略了):
^{pr2}$或者您可以使用
json
模块:但是,我认为系统应该接受未包装的令牌。在
我强烈建议您改用^{} library ,这使得使用REST API更加简洁:
请注意,不需要自己对JSON主体进行编码,也不必对基本Auth头进行编码。在
相关问题 更多 >
编程相关推荐