Jira Rest Api基本身份验证令牌 - PowerShell - 使用安全字符串构建

时间:2018-04-01 18:03:21

标签: powershell jira basic-authentication jira-rest-api securestring

我一直在尝试使用PowerShell用户持久变量构建基本身份验证令牌,我将密码存储为安全字符串。这就是我到目前为止所做的:

$PlainPassword = "atestpassword"

$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString
[Environment]::SetEnvironmentVariable('JiraCreds', $SecurePassword, "User")


$cred = New-Object pscredential "TestUser", (ConvertTo-SecureString $env:JiraCreds)
$newPassword = $cred.Password

#NOTE: This returns 403 forbidden when making rest api calls with the basic auth token
$header = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("TestUser:$(ConvertFrom-SecureString $newPassword)"))}

#NOTE: Using this returns a 401 unauthorized when using this for get/post rest api calls with the basic auth token
$header = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("TestUser:$(ConvertFrom-SecureString $newPassword)"))}

我一直在遇到的问题是,我不确定如何调整代码以正确构建基本身份验证令牌的方式正确转换securestring。我注意到的一件事是,与以下方法相比,使用上述两种方法的实际/结果基本身份验证令牌比它们应该更长并且不是正确的令牌格式:

$header = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("TestUser:atestpassword "))}

我甚至在邮递员中测试了基本的身份验证令牌,但他们也失败了。

注意:我已经确认json和jira端点以及方法正在使用在PowerShell中工作的基本auth方法进行测试。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

要从[pscredential]实例检索纯文本密码,请使用.GetNetworkCredential().Password

$newPassword = $cred.GetNetworkCredential().Password

在你的命令背景下:

$header = @{
  Authorization = 'Basic ' +         
   [Convert]::ToBase64String(
     [Text.Encoding]::UTF8.GetBytes("$($cred.UserName):$newPassword")
   )
}