2015-06-25 106 views
4

我試圖將API調用返回的JWT值與JMeter中預期的有效值進行比較。爲此,我需要在預處理器(BSF預處理器或Bean外殼預處理器)中生成預期值,然後將其與從呼叫響應值中提取的值進行比較。 有沒有人創建過類似的東西? 我目前使用http://jwt.io/來手動生成期望值,但想要在JMeter中動態生成這些值。JMeter的JSON Web令牌生成器

回答

1

不幸的是,目前還沒有在JMeter中處理JWT簽名請求的開箱即用解決方案。

看起來至少有以下選項:

  1. 嘗試使用gatling,而不是JMeter的。加特林已經爲這個有效載荷實現了擴展 - gatling-jwt - 但似乎它目前只支持GET請求。

  2. 也許你可以嘗試使用任何java implementation of JWT智威湯遜簽署延長標準的HTTP請求取樣器或定製REST Sampler - 就像它在OAuth Sampler插件的OAuth有效載荷的完成。
    但它可能看起來相當複雜,需要一點開發經驗以及不會容易出錯 - 執行不準確可能會導致性能下降並影響測試結果。

  3. 處理前後處理器的JWT簽名和響應驗證您提到的問題似乎是合理的妥協。
    當我遇到同樣的問題時,我的第一個也是相當成功的方法,也是使用Pre和PostProcessors的。
    幾點需要注意:

    • 使用JSR233(包括PreProcessorPostProcessor)+ Groovy的,而不是BeanShell的性能方面的原因(詳情你可以看看this article);
    • list of available中選擇任何穩定的java實現JWT;
      我已經使用jjwt,並發現它很好,使用起來也很簡單;
    • 在PreProcessor中執行請求主體JWT簽名,將簽名主體存儲到變量中,將其與HTTP請求一起作爲Body Data發送並在PostProcessor中解碼響應;
       
      HTTP Request// your http call 
      Body Data = ${jwtSignedBody} // variable with request body already signed in pre-processor 
          JSR233 PreProcessor// sign here your body data and put into variable 
          JSR233 PostProcessor// decode JWT-signed response 
      
    • 它可以是用於調試和進一步處理中PostProcessor中響應體像在上面的腳本解碼響應於更新極爲有用。