Quarkus:集成测试 - 如何模拟 OIDC?
Posted
技术标签:
【中文标题】Quarkus:集成测试 - 如何模拟 OIDC?【英文标题】:Quarkus: Integration tests - how to mock OIDC? 【发布时间】:2021-07-05 13:07:50 【问题描述】:我正在尝试使用 Quarkus 运行一些集成测试,并使用 Bearer Token Authorization 保护我们的 JAX-RS 应用程序。
根据我们在Quarkus Guide 上看到的内容,理论上可以模拟授权机制的行为,而无需在本地运行授权服务器(如 Keycloak)。
我发现的问题是我在所描述的任何依赖项中都找不到OidcWiremockTestResource.class
。它在哪里?
另外,我们如何避免运行授权服务器来针对我们的端点运行一些测试?
我发现可以模拟 JsonWebToken
和 SecurityIdentity
只需使用:
@InjectMock
SecurityIdentity identity;
@InjectMock
JsonWebToken token;
它工作得很好,但是当我尝试运行集成测试时,授权服务器仍然需要启动并运行。否则 Quarkus 无法尝试连接。
我尝试禁用 OIDC 扩展 (quarkus.oidc.enabled=false
),但随后代码当然无法编译(端点无法识别依赖项)。
那么,在运行一些集成测试时,哪一种是跳过 OIDC 连接的最佳方法?
最好的,
【问题讨论】:
【参考方案1】:OidcWiremocTestResource
在1.13.1.Final
中可用。
此外,TestSecurity
注释将可以在这种情况下使用,从 Quarkus 2.0
开始,也可能从 1.13.2.Final
开始(如果此 PR 将被向后移植):
https://github.com/quarkusio/quarkus/pull/16362
最后,Quarkus 2.0
将有一个 Keycloak 测试支持模块 - 如果您使用 Keycloak,那么它将有助于针对实时 Keycloak 实例进行测试。
【讨论】:
谢谢谢尔盖!在我们更新到最后一个版本后它就可以工作了 :-) 现在我们不需要仅仅为了 REST 测试而拥有授权服务器以上是关于Quarkus:集成测试 - 如何模拟 OIDC?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kubernetes 上的 Quarkus 中设置与 Keycloak 的 OIDC 连接
如何诊断 Quarkus REST 服务 OIDC 错误(特别是 403 禁止)?