基本身份验证脚本仅在第一次运行

时间:2015-04-01 10:48:35

标签: rest powershell curl

我正在研究一下我可以通过REST调用修改url上的文件和文件夹的powershell脚本,所以使用Invoke-RestMethod,但我想这适用于任何调用webrequests或者通常试图让它工作相当于curl“username:password @ host:port / path”在linux中的作用。

我的问题是我需要像curl一样传递凭据。当我使用-Credential传递凭据时,它可以正常工作 问题是当我想在脚本中执行进一步的操作或者在第二次使用它之后,我不再被提示,因此我的脚本就会挂起。

代码的相关部分:

$securepassword = ConvertTo-SecureString "mypass" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential("myuser",$securepassword)
$URI = "http://myhost:myport/mypath/"

Invoke-RestMethod -Uri $URI -Credential $credentials -Method DELETE

这在第一次运行时完全正常,但第二次它会挂起,我猜它是因为凭证提示没有来,因为它存储了一段时间。但是我可以在没有任何问题的情况下使用curl进行多次调用。

1 个答案:

答案 0 :(得分:0)

对我来说,听起来你需要在后续请求中传递某种授权项。在我构建的少数REST应用程序中,它通常是这样的:

  1. 使用凭据发送请求。
  2. 接收表示身份验证/登录成功的响应。响应应包括您追加到后续请求的某个项目(一个键?)。
  3. 在后续请求中包含授权令牌。我构建的最新REST应用程序使用userID来获取API密钥,然后在后续请求中,它在标头'x-api-key' => 'theActualKeyValue'中发送密钥/值对。也许你可以做类似的事情。