繁体   English   中英

REST-API 基本身份验证和通过 Powershell 调用 WebRequest

[英]REST-API Basic Authentication and Invoke-WebRequest via Powershell

尝试通过 Powershell 客户端连接到 REST-API。 在测试Postman端点时,我完全没有问题。 这是 function 的主要部分(我有一个[pscredential]$Creds参数用于获取用户名和密码):

[string]$username = $Creds.UserName
[string]$password = (New-Object System.Net.NetworkCredential($Creds.UserName, $Creds.Password, 'Null')).Password
[string]$authorizationInfo= ([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(('{0}:{1}' -f $username, $password))))

Invoke-WebRequest -Uri "https://$($HostName)/api/" -Method Get -Headers @{Authorization = ('Basic {0}' -f $authorizationInfo)}

出于某种原因, Authorization header 在我的脚本中与 Postman 不同。我什至可以从 Postman 中复制Authorization header 并将其粘贴到-Headers参数中,一切正常。 我只是不明白我哪里错了。

我不能告诉你为什么这不起作用,但我可以建议一些对我来说一直适用的 API:

$auth = $username + ':' + $upassword
$Encoded = [System.Text.Encoding]::UTF8.GetBytes($auth)
$authorizationInfo = [System.Convert]::ToBase64String($Encoded)
$headers = @{"Authorization"="Basic $($authorizationInfo)"}

Invoke-WebRequest -Uri "https://$($HostName)/api/" -Method GET -Headers $headers

如果这不起作用,请尝试使用 Invoke-Restmethod 进行这种细微差别:

Invoke-RestMethod -Uri "https://$($HostName)/api/" -Method GET -Headers $headers

使用 API 始终是一种冒险。 继续尝试。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM