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

Jira Rest Api Basic Auth Token - PowerShell - Building with secure strings

我一直在尝试使用 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)"))}

我一直 运行 一直关注的问题是我不确定如何调整代码以正确地转换安全字符串以正确构建基本身份验证令牌。我注意到的一件事是,与以下方法相比,使用上述两种方法的 actual/resulting 基本身份验证令牌比它们应该的长得多,而且令牌格式不正确:

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

我什至在 postman 中测试了基本的身份验证令牌,但它们在那里也失败了。

注意:我已经确认 json 和 jira 端点以及方法通过使用在 PowerShell 中工作的基本身份验证方法进行测试来工作。

如有任何帮助,我们将不胜感激。

要从 [pscredential] 实例中检索 plain-text 密码,请使用 .GetNetworkCredential().Password:

$newPassword = $cred.GetNetworkCredential().Password

在您的命令上下文中:

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