如何使用 ReadyAPI 3.6.0 自动生成 JWT
Posted
技术标签:
【中文标题】如何使用 ReadyAPI 3.6.0 自动生成 JWT【英文标题】:How to auto generate a JWT using ReadyAPI 3.6.0 【发布时间】:2021-06-25 12:46:03 【问题描述】:我有一个使用 JWT 进行授权的 Spring Boot 应用程序。我对 OAuth 和 JWT 有基本的了解,但这个应用程序使用了更多我目前不熟悉的东西。因此,为了生成 JWT 以在此应用程序中使用,我们执行类似于以下的命令:
java -jar jwt-bearer-token-acquirer-1.0.18.jar
--legacyVerifierKeyEndpoint https://example.com/oauth/token_key
--tokenEndpoint https://example.com/oauth/token
--issuer ABC123
--subject ABC123
--scope /myapp/myscope
--privateKeySignerFile C:\mykeyfile.jks
--jksKeyAlias ABC123
--jksKeyStorePassword myPassword
--jksKeyPassword myOtherPassword
一旦我们使用此命令获得 JWT,我们就可以进行 API 调用并返回预期的结果。
所以现在,我被要求了解如何使用 ReadyAPI 自动生成 JWT,这样我们的验证器就可以在不手动生成令牌的情况下运行测试。在阅读了很多关于他们的文档https://support.smartbear.com/readyapi/docs/requests/auth/types/oauth2/generate-jwt.html?sbsearch=auto%20generate%20token 之后,我仍然无法理解该怎么做。
我能够添加密钥存储信息,但我不确定在哪里或如何告诉 ReadyAPI 生成完整的 JWT,因为我不知道将验证者密钥端点或令牌端点之类的东西放在哪里。
如果有任何帮助,我将不胜感激。
提前谢谢大家。
【问题讨论】:
【参考方案1】:你说:
...这个应用程序使用了更多我目前不熟悉的东西。
因此您可能无法使用默认的 ReadyAPI 机制来生成您的 JWT。
-
启动一个测试用例,并打开Setup tab。
在设置中,您可以使用
"command".execute()
之类的内容来运行您的命令。有关更多信息,请参阅此SO Q&A。如果您可以让您的开发人员向您展示如何从 Java/Groovy 调用您的 jwt-bearer-token-acquirer-1.0.18.jar,那将简化此过程。
在脚本中将 JWT 令牌存储在 def token = "command".execute()
之类的内容中。并将令牌存储在测试用例属性中:testCase.setPropertyValue('token', token)
开始将 REST 调用添加到您的测试用例。对于您进行的每个 REST 调用,您必须使用 Add custom headers: Authorization
和值 bearer $#TestCase#token
。如果您愿意,可以使用custom Events 进行简化。
【讨论】:
以上是关于如何使用 ReadyAPI 3.6.0 自动生成 JWT的主要内容,如果未能解决你的问题,请参考以下文章
如何让 readyapi(以前称为 soapui)尊重我在 pom.xml 中指定的值?
ReadyApi为什么授权标头不起作用,但基本的auth选项卡确实如此