如何在 Quarkus 中禁用安全性
Posted
技术标签:
【中文标题】如何在 Quarkus 中禁用安全性【英文标题】:How to disable security in Quarkus 【发布时间】:2020-05-03 14:38:44 【问题描述】:我已经在我的 Quarkus 应用程序中实现了 JWT RBAC,但我不想在本地测试我的应用程序时提供令牌。
编辑:
到目前为止,我尝试将这些属性设置为“false”,但没有任何效果。
quarkus.oauth2.enabled=false
quarkus.security.enabled=false
quarkus.smallrye-jwt.enabled=false
目前我已经注释掉了所有的
//@RolesAllowed("user")
在本地“禁用”身份验证。
是否有任何属性可以为任何给定角色禁用安全/启用端点?
【问题讨论】:
你试过quarkus.[oauth|oidc].enabled=false
吗?总而言之,我怀疑这是可能的。请记住,某些端点可能需要来自令牌的信息(例如登录用户)。
@Turing85 至少 oauth2,enabled=false,看我上面的编辑
【参考方案1】:
你可以实现一个 AuthorizationController (io.quarkus.security.spi.runtime.AuthorizationController)
public class DisabledAuthController extends AuthorizationController
@ConfigProperty(name = "disable.authorization")
boolean disableAuthorization;
@Override
public boolean isAuthorizationEnabled()
return disableAuthorization;
在 Quarkus 指南中,您可以找到更多信息
https://quarkus.io/guides/security-customization#disabling-authorization
【讨论】:
【参考方案2】:看起来您正在使用 MicroProfile JWT RBAC,因此请设置以下内容: quarkus.smallrye-jwt.enabled=false
更广泛的仅供参考,您也可以在所有可用属性的上下文中 find the JWT RBAC properties here。
【讨论】:
谢谢。我已经尝试过了,它确实可能会禁用 JWT,但我的路由仍然需要角色来授权调用 要以迂回的方式到达那里(最小的努力,恕我直言),保持 quarkus.smallrye-jwt.enabled=false 设置,然后使用属性文件安全领域 (quarkus.io/guides/…)。在 application.properties 中使用 %test 为这些属性中的每一个添加前缀(或者通过 env 或系统属性定义),以便它们仅在测试期间运行。 application.properties 示例:%test.quarkus.smallrye-jwt.enabled=false、%test.quarkus.security.users.file.enabled=true 等。以上是关于如何在 Quarkus 中禁用安全性的主要内容,如果未能解决你的问题,请参考以下文章
如何修复错误原因:java.net.BindException:地址已在使用:在 Quarkus 中绑定?