如何对 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

我会建议以下配置:

  1. Put jjwt jar along with dependencies (jackson-databind) under JMeter Classpath(只需将 jars 放入 JMeter 安装的“lib”文件夹中,然后重新启动 JMeter 以获取它们)

  2. 添加 HTTP Request 采样器并将其配置为发送您的 API 请求。

  3. 添加 HTTP Header Manager 作为 HTTP 请求采样器的 child。

  4. 添加 JSR223 PreProcessor 作为 HTTP 请求采样器的 child。

  5. 将以下代码放入 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并添加Authorizationheader,值为Bearer %generated token string% HTTP 请求。

您将需要根据需要修改代码,但概念应该是相同的。如果需要,请联系您的应用程序开发人员寻求帮助。

参考文献: