如何为 JIRA 生成 jwt 令牌 API
How to generate jwt token for JIRA API
我正在尝试生成用于授权 API 的 jwt 令牌。首先,我无法从 JIRA 中找到任何令牌生成器 api。经过大量搜索后,我找到了一个 java 代码来生成 jwt 令牌,但它在导入 zephyr 库时出错。
错误:
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
我使用 SoapUI Groovy 脚本为 ZAPI 生成 JWT 令牌。
注:
lib 文件夹中的库版本应为 'commons-lang-2.6.jar' 和 'commons-codec-1.11.jar'。
在 bin -> ext 文件夹中添加 'jwt-generator.jar' 和 'zfj-cloud-rest-client-3.0.jar'。
jwt generator
JWT 令牌将针对输入的 API url 创建。
例如:
String createCycleUri = zephyrBaseUrl + "/public/rest/api/1.0/cycle";
在生成 jwt 令牌之前提及 api HTTP 方法类型。
String jwt = jwtGenerator.generateJWT("POST", uri, expirationInSec);
站点始终针对任何 ZAPIapi 固定。这将获取 JWT 令牌。
文档中提到的。
- 如果您使用以下文档中提到的 JIRA api,将使用您创建的站点 url。这将需要基本的身份验证。
例如:
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 的示例。
我正在尝试生成用于授权 API 的 jwt 令牌。首先,我无法从 JIRA 中找到任何令牌生成器 api。经过大量搜索后,我找到了一个 java 代码来生成 jwt 令牌,但它在导入 zephyr 库时出错。
错误:
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
我使用 SoapUI Groovy 脚本为 ZAPI 生成 JWT 令牌。
注:
lib 文件夹中的库版本应为 'commons-lang-2.6.jar' 和 'commons-codec-1.11.jar'。
在 bin -> ext 文件夹中添加 'jwt-generator.jar' 和 'zfj-cloud-rest-client-3.0.jar'。 jwt generator
JWT 令牌将针对输入的 API url 创建。 例如:
String createCycleUri = zephyrBaseUrl + "/public/rest/api/1.0/cycle";
在生成 jwt 令牌之前提及 api HTTP 方法类型。
String jwt = jwtGenerator.generateJWT("POST", uri, expirationInSec);
站点始终针对任何 ZAPIapi 固定。这将获取 JWT 令牌。
文档中提到的。
- 如果您使用以下文档中提到的 JIRA api,将使用您创建的站点 url。这将需要基本的身份验证。
例如:
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 的示例。