Доступно:
JIRA 4.1 и более поздних версий.
Обзор и цель
JIRA 4.1 и более поздние версии используют механизм аутентификации маркера, который используется всякий раз, когда действия JIRA выполняются либо посредством запроса ссылки, либо отправки формы. Это предоставляет JIRA средство для проверки происхождения и намерения запроса, тем самым добавляя дополнительный уровень защиты от XSRF (подделка запросов на межсайтовый запрос). Хотя основной продукт JIRA и связанные с ним плагины используют этот механизм обработки маркеров по умолчанию, не связанные с плагинами плагины или те, которые разрабатываются третьими лицами, могут и не быть.
В этом документе содержатся инструкции разработчикам плагинов JIRA о том, как включить этот механизм обработки токенов в плагины JIRA.
Токены форм
JIRA 4.1 требует, чтобы действия WebWork обладали токенами, которые затем проверяются при отправке формы на сервер JIRA. Это механизм «выборки в», действия в котором должны заявлять, что они требуют наличия токена в запросе.
Инструкции для разработчиков плагинов
В следующих подразделах содержится подробная информация о том, как защитить код от XSRF, выполнив обработку токена формы в вашем плагине JIRA.
Имейте в виду, что после того, как обработка токена формы была внедрена в плагин JIRA:
- Любые функции, которые используют очистку экрана, например функцию «создать подзадачу» в FishEye, будут нарушены.
- Конечные точки API REST не будут затронуты, если они не используют кодировку формы.
Действия JIRA WebWork
Чтобы включить проверку токена xsrf для определенного класса Action
- Найдите метод, вызванный выполнением действия (по умолчанию этот метод называется doExecute ())
- Добавьте комментарий @ com.atlassian.jira.security.xsrf.RequiresXsrfCheck к этому методу
Предоставление токена в HTML-формах
Токен включен по умолчанию при использовании jiraform
Токен может быть включен в ваши собственные JSP, которые не используют jiraforms, добавив следующий код:
<webwork:component name="'atl_token'" value="/xsrfToken" template="hidden.jsp"/>
Следующий код может быть добавлен в шаблоны Velocity:
<input type="hidden" name="atl_token" value="$atl_token" />
Предоставление токена в HTML-ссылках
Вы можете сделать следующее в JSP:
MyAction.jspa?myParameter=true&atl_token=<webwork:property value="/xsrfToken"/>
или Шаблоны Velocity:
MyAction.jspa?myParameter=true&atl_token=${atl_token}
Доступ к токену программно
Чтобы получить токен текущего пользователя, вам необходимо сделать следующий вызов:
import com.atlassian.jira.security.xsrf.XsrfTokenGenerator;
XsrfTokenGenerator xsrfTokenGenerator = ComponentManager.getComponentInstanceOfType(XsrfTokenGenerator.class);
String token = xsrfTokenGenerator.generateToken(request);
Написания скрипта
Скрипты(Сценарии, которые имеют доступ к JIRA удаленно, могут иметь проблемы с получением или возвратом токена безопасности или поддержкой сеанса HTTP с сервером. Существует способ для сценариев отказаться от проверки маркера, предоставив в запросе следующий HTTP-заголовок:
X-Atlassian-Token: no-check
ПОХОЖИЕ ТЕМЫ
- Защита XSRF в Confluence.
Для получения дополнительной информации см. страницу проекта Open Web Application
По материалам Atlassian JIRA Server Developer Form token handling