java - 如何使用 OAuth 对 MicroProfile REST 客户端调用进行身份验证?
问题描述
在我的服务器应用程序中,我想使用 MicroProfile REST 客户端使用一些第三方 API。为此,我需要发送一个Authorization
带有不记名令牌的 Header。
我不想在进行任何调用之前总是获取令牌,因此我需要一种机制来仅在还没有令牌或令牌过期时才检索新令牌。然后可以在每次调用中存储和使用令牌,直到它过期。下一次调用会导致 HTTP 401 Unauthorized 的 API 将导致获得一个新的令牌。
不幸的是,到目前为止,我无法找到有关如何使用 MicroProfile REST 客户端使用 OAuth 安全 API 的任何资源。我希望任何人都可以给我任何提示。我正在使用 Kotlin 和 Quarkus,但 Java 相关文档也可以。任何事情都有帮助。
这是我相当简单的客户:
@RegisterRestClient
@Produces(MediaType.APPLICATION_JSON)
interface SomeThirdPartyApiClient {
@POST
@Path("/some/random/url")
fun someRandomUrl(body: SomeJsonRequestObject, @HeaderParam("Authorization") bearer: String): SomeJsonResponseObject
}
解决方案
没有任何方法可以在注释级别通过 eclipse microprofile 配置传递它,传递动态令牌的唯一方法是添加
@HeadParameter("Authorization") authString
在您的休息调用中,如果您使用的是 jwt,通常您可以注入 JsonWebToken 并使用此对象进行所有检查,因此您不需要该参数,但是,您可以添加它并忽略,而不是在您休息时客户端方法声明你也必须添加它(正如我看到你的情况你已经这样做了,只需确保参数的顺序是相同的),并且restclient将能够通过标头传递令牌(你需要传递“ Bearer"+tokenString),但是你需要访问你的rest服务的代码。
推荐阅读
- php - 创建后以编程方式将页面添加到菜单
- node.js - fastify 服务 angular6 应用
- jenkins - jenkinsfile 发送电子邮件通知
- java - Android Studio:如何在一个按钮中设置标题和描述?
- javascript - 将解析的 JSON 读入数组不起作用?
- javascript - TypeError:上传文件时无法读取Node js中未定义的属性“路径”
- javascript - Protractor browser.executeScript 在参数列表后抛出“SyntaxError: missing )”异常
- spring-boot - 如何为现有的 jhipster 项目重新生成新的 JPA 实体(以及不同数据库模式中的数据库表)?
- macros - 宏sas中无法确定行列
- kubernetes - Kubernetes 作业 pod 已成功完成,但其中一个容器尚未准备好