jwt - 如何使用 JWT 正确验证 Quarkus / smallyre-JWT 的 openapi UI?
问题描述
我有一个 Quarkus 端点站起来。由 JWT 和角色保护。
它在邮递员中工作。(Header<Authorization, Bearer ey……>)
我查看并挣扎,发现我不能做一个典型的@Header
或@Parameter
注释来公开这个 Authorization 标头——它踩踏了那个精确的值。“授权1”我可以暴露。但不是“授权”。
我在文件中有一个 jwt 配置选项application.YML
。我现在在 UI 上获得了一个身份验证“挂锁”,但无论我在那里输入什么,都不会在“试用”模式下传递给 CURL 命令。
有没有人解决过这个问题?
application.yml
部分:
smallrye-openapi:
...
jwt-bearer-format: JWT
jwt-security-scheme-value: Bearer
security-scheme: jwt
这些图像可能有用:
解决方案
这不是一个真正的错误。您可以在 Quarkus 中指定一个配置,允许您将 JWT 令牌注入到来自 Swagger 的每个请求中。
您需要做一些工作才能完成此操作,因为 Swagger 事先不知道如何读取 JWT 令牌以及如何将其重用于后续调用。
以下是您可以用来使 Swagger 调用在 Quarkus 项目中工作的一种方法。
这里有一些东西要解压。
警告
这已经过测试,可以与 Quarkus 2.0.1.Final 一起使用。旧版本的 Quarkus 使用旧版本的 SmallRye,在呈现请求拦截器时存在错误。
- 在 Quarkus
quarkus.swagger-ui.request-interceptor
中使用此配置将 jwt 令牌注入 Swagger 的请求标头中。这个值进入你的application.properties
. (请修改此配置以适合 yml 文件)
quarkus.swagger-ui.request-interceptor=function(req){var authToken=sessionStorage.getItem('authenticationToken');if(authToken){req.headers['Authorization']='Bearer'+authToken;}返回req ;}
现在转到您的 Swagger UI 并使用您使用的登录端点登录。这将返回 jwt 令牌。转到浏览器并将值输入到浏览器的会话存储中,键为“authenticationToken”
现在,当您点击任何要测试的端点时,Swagger 将使用
request interceptor
(在 1 中定义)从浏览器的会话存储中注入 JWT,您的调用将正常工作。
推荐阅读
- android - ADB 如何查找设置和提取坐标以便我可以通过编程方式执行点击?
- hive - 在 Impala 中通过正则表达式选择列?
- javascript - 检查一个 HTML 字符串是否只有元素子元素(或元素之间的空格)并且没有元素是未知的
- git - 将文件提交到 git 但之后不允许更改
- powershell - JiraPS PowerShell 模块 / new-jiraissue 问题
- loops - SAS - 计算贷款未来利息和摊销的现值
- node.js - 接收来自 Kafka 的响应并返回消息
- firebase - 更新 firebase 中的 SHA-1 和 SHA-256 密钥后是否必须下载 google-services.json 文件。?
- typescript - 打字稿重载类方法。方法 X 应根据对象参数类型 A 或 B 返回对象类型 Y 或 Z
- typescript - 下一个ie11中的图像错误