Jira API получает вложение

Я написал некоторый код, который отображает список вложений. Однако проблема в том, что я хочу, чтобы пользователь мог просматривать вложение без входа в систему. Есть ли способ аутентификации для пользователя? Вот мой код:

 //to get cases.  this returns a list of attachments, with the url in Jira

$attachments = $jira_case->issues[0]->fields->attachment;

//iterates over the lists and creates links
foreach ($attachments as $i=> $attachment) {
$html .="<tr>
<td style='padding-left: 10px; width:0px; padding-top: 20px;' colspan='3'>
". ($i+1) .") <a target = '_blank' href ='". $attachment->content ."'>". nl2br($attachment->filename) ."</a>
</td>
</tr>";
}

Проблема в том, что когда пользователь нажимает на ссылку, если он не вошел в систему, ему будет предложено войти в систему. Я не хочу этого, так как это мое приложение аутентифицируется, так что пользователю не нужна учетная запись jira , Это возможно? Может быть, передавая какой-то токен?

Ясон

0

Решение

С точки зрения JIRA, запрос от браузера пользователя не содержит заголовка аутентификации. JIRA использует тот же набор разрешений для вложений, что и для проблем, поэтому, когда пользователь может просмотреть конкретную проблему JIRA, он также может просматривать (и загружать) вложения. Поэтому, если вы не сделаете свой проект {s} и выпустите {s} доступными для анонимного пользователя, кто-то с соответствующими разрешениями должен пройти аутентификацию. Если вы хотите, чтобы пользователи могли загружать вложения только через ваше приложение, как пользователь приложения, вам нужно каким-то образом прокси-сервер через приложение. Вместо того, чтобы отображать ссылки на страницы, указывающие непосредственно на JIRA, вам нужно создать ссылки, указывающие на ваш сервер, тогда ваш сервер должен связаться с JIRA для вложения и аутентифицировать себя как пользователя вашего приложения (с разрешениями для просмотра проблемы, которая содержит вложения) и передать ответ от JIRA конечному пользователю.

2

Другие решения

В случае, если кто-то еще задается вопросом, как это сделать:

$url = "https://mySite.atlassian.net/secure/attachment/". $attachment_id ."/". $attachment_name ."?os_username=". $this->jira_user_name ."&os_password=" . $this->jira_password;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

$file = curl_exec($ch);
curl_close($ch);

if($file){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$attachment_name);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
echo ($file);
exit;
}else{
throw new Exception("Error:  file now found.");
}
1

По вопросам рекламы [email protected]