Wie kann ich ein sicheres Passwort eingeben und speichern? Ich muss es von Secure konvertieren, um es in JSON zu integrieren, um ein REST-Token zu erhalten.Umgang mit PowerShell Secure Strings
Mein Beispiel ist:
PS C: \ Temp> $ secpass = Read-Host -assecurestring "Bitte geben Sie das Kennwort";
Bitte Passwort eingeben: *****
PS C: \ Temp> echo secpass $
System.Security.SecureString
PS C: \ Temp> $ pass = ConvertFrom -SecureString $ secpass
PS C: \ Temp> Echo passieren $ 01000000d08c9ddf0115d1118c7a00c04fc297eb010000004fe37b5a39a93542a74298c3740cae0b0000000002000000000003660000c00000001000000096aa9947681adf56ce6f9fd2d9ced214000000000 4800000a0000000100000006bbff8b1e2115682e9be4c775d8372ee10000000b80a4a99147901275a9080c257712b1914000000010eabc8c134837751dbd2d648dbbca1f7335e9f
PS C: \ Temp>
Ich will wieder den ConvertFrom-Secure und mein einfaches Klartext-Passwort laufen.
BEARBEITEN;
Ich habe die folgende Funktion, die ein REST-Token erhält:
function Get-AuthToken {
Param(
[string]$server,
[string]$username,
[securestring]$password
)
$creds = @{
username = $username
password = $password
grant_type = "password"
};
Invoke-RestMethod -Method Post "$server/api/token" -Body $creds
}
$ creds Zum Aufbau richtig das Passwort muss im Klartext sein.
Außerdem habe ich auch die nach dem Fall, in der Passwort-String zu decken ist nicht gegeben, wenn das Skript ausgeführt wird:
If(!$Password) {
[ValidatePattern("\w+")]$password = Read-Host -assecurestring "Please enter password";
}
Per erster hier Convert a secure string to plain text gegeben Antwort, die ich versucht habe folgende hinzuzufügen, bevor der anruf Get-authToken Funktion:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
$unsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$response = Get-AuthToken -username $User -password $unsecurePassword -server $server
Wenn ich einen Write-Host $ unsecurePassword tun kann ich die richtige Zeichenfolge sehen jedoch die Get-authToken schlägt die Authentifizierung fehl.
EDIT 2:
Wenn ich die Funktion zu ändern:
function Get-AuthToken {
Param(
[string]$server,
[string]$username,
[string]$password
)
$creds = @{
username = $username
password = $password
grant_type = "password"
};
Invoke-RestMethod -Method Post "$server/api/token" -Body $creds
}
, die das $ password Parameter eine Zeichenfolge anstatt eine sichere Zeichenfolge macht dann funktioniert es aber nicht glauben, dies am besten ist Übung seit Visual Studio Code sich beschweren.
https://blogs.technet.microsoft.com/heyscriptingguy/2013/03/26/decrypt-powershell-secure-string-password/ –