如何对 JWT Secured Rest 进行负载测试 API
How to do load testing for JWT Secured Rest API
我正在使用 Spring 开发 REST API (HTTPS),现在需要加载测试到 1000 个并发 users.The 问题是我使用 siege 来加载测试但它无法测试通过 jwt 令牌 header.Which 是在我的场景中执行负载测试的最佳方式吗?
您可以使用 Jmeter 来测试 JWT Secured Rest API。
您可以在 "HTTP Header Manager" 中包含 jwt 令牌以及请求。
参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager
我会建议以下配置:
Put jjwt jar along with dependencies (jackson-databind) under JMeter Classpath(只需将 jars 放入 JMeter 安装的“lib”文件夹中,然后重新启动 JMeter 以获取它们)
添加 HTTP Request 采样器并将其配置为发送您的 API 请求。
添加 HTTP Header Manager 作为 HTTP 请求采样器的 child。
添加 JSR223 PreProcessor 作为 HTTP 请求采样器的 child。
将以下代码放入 JSR223 PreProcessor“脚本”区域:
import io.jsonwebtoken.Jwts
import io.jsonwebtoken.SignatureAlgorithm
import io.jsonwebtoken.impl.crypto.MacProvider
import org.apache.jmeter.protocol.http.control.Header
import java.security.Key
def key = MacProvider.generateKey();
def compactJws = Jwts.builder()
.setSubject('Joe')
.signWith(SignatureAlgorithm.HS512, key)
.compact()
sampler.getHeaderManager().add(new Header('Authorization', 'Bearer ' + compactJws))
上面的代码会生成一个JSON Web Token that will have the registered claim子(subject)设置为Joe
并添加Authorization
header,值为Bearer %generated token string%
HTTP 请求。
您将需要根据需要修改代码,但概念应该是相同的。如果需要,请联系您的应用程序开发人员寻求帮助。
参考文献:
我正在使用 Spring 开发 REST API (HTTPS),现在需要加载测试到 1000 个并发 users.The 问题是我使用 siege 来加载测试但它无法测试通过 jwt 令牌 header.Which 是在我的场景中执行负载测试的最佳方式吗?
您可以使用 Jmeter 来测试 JWT Secured Rest API。
您可以在 "HTTP Header Manager" 中包含 jwt 令牌以及请求。
参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager
我会建议以下配置:
Put jjwt jar along with dependencies (jackson-databind) under JMeter Classpath(只需将 jars 放入 JMeter 安装的“lib”文件夹中,然后重新启动 JMeter 以获取它们)
添加 HTTP Request 采样器并将其配置为发送您的 API 请求。
添加 HTTP Header Manager 作为 HTTP 请求采样器的 child。
添加 JSR223 PreProcessor 作为 HTTP 请求采样器的 child。
将以下代码放入 JSR223 PreProcessor“脚本”区域:
import io.jsonwebtoken.Jwts import io.jsonwebtoken.SignatureAlgorithm import io.jsonwebtoken.impl.crypto.MacProvider import org.apache.jmeter.protocol.http.control.Header import java.security.Key def key = MacProvider.generateKey(); def compactJws = Jwts.builder() .setSubject('Joe') .signWith(SignatureAlgorithm.HS512, key) .compact() sampler.getHeaderManager().add(new Header('Authorization', 'Bearer ' + compactJws))
上面的代码会生成一个JSON Web Token that will have the registered claim子(subject)设置为Joe
并添加Authorization
header,值为Bearer %generated token string%
HTTP 请求。
您将需要根据需要修改代码,但概念应该是相同的。如果需要,请联系您的应用程序开发人员寻求帮助。
参考文献: