Как сгенерировать токен jwt для JIRA API

Я пытаюсь сгенерировать токен jwt для авторизации API. Во-первых, я не могу найти API токена-генератора от JIRA. После долгих поисков я нашел java-код для генерации токена jwt, но он выдает ошибку при импорте библиотек зефира.

Ошибка:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script4.groovy: 18: unable to resolve class com.thed.zephyr.cloud.rest.ZFJCloudRestClient @ line 18, column 1. import com.thed.zephyr.cloud.rest.ZFJCloudRestClient;

Java-код:

https://github.com/zephyrdeveloper/zapi-cloud/blob/master/Samples/src/com/thed/zapi/cloud/sample/sampleJwtGenerator.java

1 ответ

Решение

Я использовал скрипт Groovy SoapUI для генерации токена JWT для ZAPI.

Замечания:

  1. Версия библиотеки должна быть 'commons-lang-2.6.jar' и 'commons-codec-1.11.jar' в папке lib.

  2. Добавьте 'jwt-generator.jar' и 'zfj-cloud-rest-client-3.0.jar' в папку bin -> ext. генератор JWT

  3. Будет создан токен JWT, соответствующий введенному URL-адресу API. например:

    String createCycleUri = zephyrBaseUrl + "/public/rest/api/1.0/cycle";

  4. Упомяните api-метод HTTP-метода перед созданием токена jwt.

    String jwt = jwtGenerator.generateJWT ("POST", uri, expirationInSec);

  5. Сайт всегда исправлен для любого API ZAPI. Это займет токен JWT.

https://prod-api.zephyr4jiracloud.com/connect

Который упоминается в документе.

https://zfjcloud.docs.apiary.io/

  1. Ваш созданный URL сайта будет использоваться, если вы используете API JIRA, упомянутый в приведенном ниже документе. Это займет основной Auth.

https://getzephyr.docs.apiary.io/

например:

https://newapi.atlassian.net/

Groovy:

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import com.thed.zephyr.cloud.rest.ZFJCloudRestClient;
import com.thed.zephyr.cloud.rest.client.JwtGenerator;

def site = context.expand( '${#Project#Site}' )
def zapiAccessKey = context.expand( '${#Project#zapiAccessKey}' )
def secretID = context.expand( '${#Project#secretID}' )
def user = context.expand( '${#Project#user}' )

    // Replace Zephyr BaseUrl with the <ZAPI_CLOUD_URL> shared with ZAPI Cloud Installation
    String zephyrBaseUrl = site;
    // zephyr accessKey , we can get from Addons >> zapi section
    String accessKey = zapiAccessKey;
    // zephyr secretKey , we can get from Addons >> zapi section
    String secretKey = secretID;
    // Jira UserName
    String userName = user;

    ZFJCloudRestClient client = ZFJCloudRestClient.restBuilder(zephyrBaseUrl, accessKey, secretKey, userName).build();
    JwtGenerator jwtGenerator = client.getJwtGenerator();

    // API to which the JWT token has to be generated
    String createCycleUri = zephyrBaseUrl + "/public/rest/api/1.0/cycle";

    URI uri = new URI(createCycleUri);

    int expirationInSec = 3600;
    String jwt = jwtGenerator.generateJWT("POST", uri, expirationInSec);

  log.info "JWT Token : " + jwt

  //Store token in property.
  context.testCase.testSuite.project.setPropertyValue('JWT_Token', jwt)

Отмеченный ответ, я думаю, правильный для Cloud Jira. Однако серверный ZAPI работает как внутренний Jira API. Таким образом, вам понадобится только базовая авторизация в Jira.

your_jira_base_url / rest / zapi / latest / zql / executeSearch?zqlQuery=(project='25221')&maxRecords=3654

Это как пример запроса на получение ZQL.

Другие вопросы по тегам