Я пытаюсь вызвать REST API Blackduck из декларативного конвейера Jenkins.
Поскольку блэкдак сначала аутентифицируется с использованием SAML от login.microsoftonline.com, а затем отправляет запрос и предоставляет ответ.
Если для доступа к https://blackduckxxx.com/api/projects?q=name:myproject, используется браузер, он сначала запрашивает мой SSO (имя пользователя и пароль), а затем перенаправляет для отображения результатов API. Здесь также используется токен API.
Если я пытаюсь получить доступ к тому же API из конвейера Jenkins, я получаю ответ ниже
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body onload="document.forms[0].submit()">
<noscript>
<p>
<strong>Note:</strong> Since your browser does not support JavaScript,
you must press the Continue button once to proceed.
</p>
</noscript>
<form action="https://login.microsoftonline.com/222fcaf7-15d0-455f-97e1-8fda2eaad539/saml2" method="post">
<div>
<input type="hidden" name="SAMLRequest" value=".............."/>
</div>
<noscript>
<div>
<input type="submit" value="Continue"/>
</div>
</noscript>
</form>
</body>
</html>
Пытался передать имя пользователя и пароль в URL, например,
https://blackduckxxx.com/api/projects?q=name:myprojects&user=me&password=mypwd
However it did not work.
```` Jenkins pipeline
stage("OC login"){
steps{
script{
def bdUrl = 'https://blackduckxxx.com'
def bdApi = '/api/projects'
def params = 'name:myproject'
def bdUrlRequestProjectID = bdUrl + bdApi + "?q=" + params
println("bdUrlRequestProjectID is ${bdUrlRequestProjectID}")
def response = httpRequest authentication: 'login-microsoft', acceptType: 'APPLICATION_JSON',httpMode: 'GET',consoleLogResponseBody: true, url: "${bdUrlRequestProjectID}", customHeaders: [[name: 'X-CSRF-TOKEN', value: 'xxxxxx']]
}
}
}
}
}
Ожидаемый результат - получение стандартного ответа по имени проекта от Blackduck API