Команда PowerShell для запуска заданий Jenkins выдает ошибку аутентификации - PullRequest
0 голосов
/ 09 января 2019
$Auth = "admin:password"
$JenkinsURL = "http://$Auth@172.24.235.27:8080/"
$JobName = "TestItem1"
$JobToken = "token"
$FullURL = "$JenkinsURL/job/$JobName/build?token=$JobToken"
Invoke-WebRequest -UseBasicParsing $FullURL

Выше приведен код PowerShell, используемый для запуска задания Jenkins. Но при выполнении этого я сталкиваюсь с ошибкой «Требуется аутентификация». Но та же команда из curl работает нормально.

Я не уверен, что мне не хватает чего-то в URL или какого-то плагина Jenkins для предоставления доступа из PowerShell.

1 Ответ

0 голосов
/ 11 января 2019

Причина, по которой вы получаете ошибку аутентификации, заключается в том, что вам нужно преобразовать аутентификацию в строку base 64. Ниже приведен сценарий, который можно использовать, если вы не включили CSRF в Jenkins.

$UserName = "admin"
$Password = "password"
$API_URL = "jenkinsservername"
$JobName = "TestItem1"
$JobToken = "token"
$header = @{}
$Params = @{}
$header.Add('Authorization', 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$(${UserName}):$(${Password})")))
$Params['uri'] = "http://jenkinsservername/$JobName/build?token=$JobToken"
$Params['Method'] = 'Post'
$Params['Headers'] = $header
Invoke-RestMethod @Params 

Но если у вас в Jenkins включено CSRF , используйте скрипт ниже

$UserName = "admin"
$Password = "password"
$API_URL = "jenkinsservername"
$JobName = "TestItem1"
$JobToken = "token"
$header = @{}
$header.Add('Authorization', 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$(${UserName}):$(${Password})")))
$Params = @{uri = "http://${API_URL}:${API_Port}/crumbIssuer/api/json";
        Method = 'Get';
        Headers = $header;}
$API_Crumb = Invoke-RestMethod @Params
write-host $API_Crumb
$h.Add('Jenkins-Crumb', $API_Crumb.crumb)
$Params['uri'] = "http://jenkinsservername/$JobName/build?token=$JobToken"
$Params['Method'] = 'Post'
$Params['Headers'] = $header
Invoke-RestMethod @Params
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...