Как использовать базовую аутентификацию с JIRA REST API в JavaScript?

Я создаю приложение JavaScript для Smart TV, чтобы показывать информационные панели по телевизору. Я получаю список инструментальных панелей с помощью JIRA REST API. URL, который я использую для этого:

jira/rest/api/2/dashboard?startAt=&maxResults=

после этого я создаю настенный экран, как показано ниже, чтобы показать их по телевизору:

jira/plugins/servlet/Wallboard/?dashboardId=&os_username=&os_password=

из-заos_username а такжеos_password, JIRA знает, что я аутентифицирована и получает правильный список. этот список мне нужен с самого начала, но потому что я вызываю вышеуказанный URL с параметрамиos_username а такжеos_password это действительно правильный список

но при запуске телевизора / в первый раз, когда я получаю список инструментальных панелей с JIRA, никто не аутентифицируется, поэтому он принимает случайный список, а не тот, который мне нужно получить.

В JIRA есть способ аутентификации с помощью команды ниже:

curl -D- -u fred:fred -X GET -H "Content-Type: application/json"         http://example.com/rest/api/2/issue/createmeta

но я не знаю, как использовать эту команду в JavaScript.

Так может кто-нибудь сказать мне, как я могу пройти аутентификацию в JIRA с помощью базовой аутентификации и очень важно, чтобы она была JAVASCRIPT.

Ответы на вопрос(2)

Вот, Я полагаю. Ну на этой же странице объясняется, как «сделать это самостоятельно». Я "переведу" шаги, которые вам нужно сделать, чтобы выполнить тот же запрос в JS.

Метод запроса должен бытьПОЛУЧИТЬУ вас должно быть 2 заголовка:Заголовок авторизации и заголовок типа контента, Ваш заголовок Content-type должен выглядеть так:«Тип контента: приложение / JSON»

Для заголовка авторизации:

Создайте строку в формеимя пользователя ПарольBase64 закодировать строку (использоватьwindow.btoa () а такжеwindow.atob ()) -Вам на самом деле не нужен второй, но я положил его туда для справкиУкажите заголовок «Authorization» с содержимым «Basic», за которым следует закодированная строка. Например, строка «fred: fred» кодируется в «ZnJlZDpmcmVk» в base64, поэтому ваш заголовок авторизации должен выглядеть так:«Авторизация: Basic ZnJlZDpmcmVk»

Таким образом, в конце концов, вам нужно сделать запрос GET с двумя предоставленными заголовками, и вы должны быть авторизованы. ТакжеОСТОРОЖНО Base64 является обратимым а НЕ функция шифрования. Это кодировка. Конечно, запрос будет проходить через HTTPS, но в случае разрыва SSL строка, закодированная в Base64, может быть изменена.

 Mohammad Adnan28 дек. 2013 г., 09:11
Вы пробовали то, что вы предложили здесь. Кажется, это не работает для меня. Пожалуйста, посмотрите наstackoverflow.com/questions/20812158/...
 Borislav Sabev21 янв. 2014 г., 16:45
Да у меня и работает нормально.
 Mohammad Adnan28 дек. 2013 г., 06:16
Метод запроса должен быть получен, вероятно, потому что у JIRA нет поддержки методов put или post?

если у вас есть свой собственный экземпляр JIRA, вы должны сначала включить ваш сайт в белый список, чтобы сначала включить CORS для своего домена:

Если вы являетесь клиентом JIRA Server, просто перейдите в раздел «Белый список» Администрирования JIRA и добавьте домены, с которых вы хотите запрашивать ресурсы.

В противном случае ваш запрос закончится ошибкой, так как он нарушает политику браузера того же происхождения (http://enable-cors.org/).

Важный: Если вы используете JIRA по запросу / облаку, вы не сможете успешно получить доступ к API с помощью базовой аутентификации, используя чистый код JavaScript / на стороне клиента. Это связано спричины безопасностии, к сожалению, команда Atlassian пока не предлагает решения. Одним из решений этой проблемы может быть установка прокси на вашем сервере, который перенаправляет ваши запросы JavaScript из браузера в действительный экземпляр JIRA.

Чтобы избежать любых возможных проблем из-за ошибок в вашем коде, я настоятельно рекомендую попробовать доступ к JIRA API, используя CURL в качестве первого шага:

  curl -D- -X GET -H "Authorization: Basic %BASE64-CREDENTIDALS%" -H "Content-Type: application/json" "https://webjets.atlassian.net/rest/api/2/issue/WJ-333"

Обратите внимание, что вы должны заменить% BASE64-CREDENTIDALS% на вашу фактическую пару пользователь / пароль в кодировке Base64. Важно знать, что это работает только с именем пользователя JIRA, а не с адресом электронной почты пользователей JIRA. Это может сбивать с толку, так как обычно вы также можете войти в JIRA, используя адрес электронной почты, но не будете работать с API.

После того, как ваш домен занесен в белый список, вы готовы к работе - создайтеПОЛУЧИТЬ запрос со следующими деталями:

Добавьте заголовок типа контента:Content-Type: application/json

Сначала добавьте базовый заголовок аутентификацииBase64 кодирование имени пользователя и пароля:

var authCode = window.btoa( user + ":" + password ); var authHeader = "Authorization: Basic " + authCode;

Выполните запрос по URL-адресу конечной точки API JIRA, например:

<a href="https://%PROJECT%.atlassian.net/rest/api/2/issue/%ISSUE-ID%" rel="nofollow noreferrer">https://%PROJECT%.atlassian.net/rest/api/2/issue/%ISSUE-ID%</a>

Смотрите вопрос StackOverflow "Как использовать Basic Auth с JQuery и AJAX?"для подходов, как выполнить запрос, используя jQuery.

Уведомление о безопасности: Помните, что код авторизации - это не зашифрованное значение, а кодировка. Позаботьтесь о том, где вы храните или предоставляете его!

Ваш ответ на вопрос