我一直在尝试使用PowerShell用户持久变量来构建基本的auth令牌,在该变量中我将密码存储为安全字符串。这就是我到目前为止的:
$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 "))}
我什至在Postman中测试了基本的验证令牌,他们也在那儿失败。
注意:我已经确认了JSON和JIRA端点以及方法正在使用一种在PowerShell中使用的基本AUTH方法来工作。
对此的任何帮助将不胜感激。
从 [pscredential]
实例中检索 plain-text 密码,请使用 .GetNetworkCredential().Password
:
$newPassword = $cred.GetNetworkCredential().Password
在您的命令中:
$header = @{
Authorization = 'Basic ' +
[Convert]::ToBase64String(
[Text.Encoding]::UTF8.GetBytes("$($cred.UserName):$newPassword")
)
}