1

Очень простой вопрос ... Попытка выяснить это, прежде чем я вернусь на работу завтра, поэтому, к сожалению, у меня нет доступа к моему скрипту Powershell, но я опубликую его завтра, если я не пойму это.

Я создал текстовый файл, содержащий мой зашифрованный секретный ключ API. Когда я отправляю запрос GET с жестко запрограммированным ключом в приложении, он работает как положено. Однако, когда я сохраняю зашифрованный ключ в переменной и затем пытаюсь выполнить запрос GET, используя эту переменную, я получаю сообщение об ошибке, в котором говорится, что он не может аутентифицировать ключ. Это потому, что я должен расшифровать его перед отправкой?

Обновить:

До сих пор неясно, как решить эту проблему. Обеспокоены уязвимостями, если я расшифрую ключ в моем скрипте.

$key = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $keyFile.username, $keyFile.password 
$secret = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $secretFile.username, $secretFile.password 


$tc='[{"data":"pdnsBlah.domaincontrol.com","name":"- 
","ttl":9999,"type":"NS"}, 
{"data":"pdnsBlah.domaincontrol.com","name":"-","ttl":9999,"type":"NS"}]'

# Event log settings
$eventLog = "Application"
$eventSource = "GoDaddyDNSMonitor"

#check to see if event source exists, if not create one
if (![System.Diagnostics.EventLog]::SourceExists($eventSource))
{
New-EventLog -LogName $eventLog -Source $eventSource

}



#Here is where my issue lies########################################
$newConfig=C:\Users\di203179\Documents\Curl\bin\curl.exe -s -X GET -H 
"Authorization: sso-key $key`:$secret" 
https://api.godaddy.com/...
If ($tc -ne $newConfig)
{
    $Message = "DNS Nameserver @ GoDaddy has changed to " + $newConfig + " 
Application Infrastructure On-call needs to be paged. Details are below."
    Write-EventLog -LogName $eventLog -Source $eventSource -EventID 20000 - 
EntryType Error -Message $Message
    echo "false"
}
else {

    echo "true"
}

Спасибо за вашу помощь и терпение.

1 ответ1

0

Хорошо, поэтому я разобрался с проблемой. Большое спасибо тем, кто прокомментировал и преодолел мое первое препятствие. Определенно не удалось отправить зашифрованный файл на сервер, и, очевидно, многие серверы не знают, как обрабатывать объекты PSCredential.

Подробности здесь: https://blogs.technet.microsoft.com/heyscriptingguy/2013/03/26/decrypt-powershell-secure-string-password/

И вот как я это решил.

$keyObject = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $keyFile.username, $keyFile.password 
$secretObject = new-object -typename System.Management.Automation.PSCredential - 
argumentlist $secretFile.username, $secretFile.password

$newConfig=C:\Users\di203179\Documents\Curl\bin\curl.exe -s -X GET -H "Authorization: 
sso-key 

$($keyObject.GetNetworkCredential().Password):$($secretObject.GetNetworkCredential().Password)" https://api.godaddy.com/... ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .