如何使用 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/maven 集成 - 无法传输工件

ReadyApi为什么授权标头不起作用,但基本的auth选项卡确实如此

SOAP UI(ReadyAPI)学习——第一步:资源帖

如何使用 Javascript 通过 selenium 3.6.0 使用另一个配置文件打开 Firefox 浏览器

ubuntu中如何安装python3.6