如何在 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 中禁用安全性的主要内容,如果未能解决你的问题,请参考以下文章

Quarkus Rest客户端和OAuth2

如何修复错误原因:java.net.BindException:地址已在使用:在 Quarkus 中绑定?

如何在 Quarkus 中使用自定义编码器和解码器?

如何在 Gradle 中使用 Quarkus gRPC 扩展?

如何在 Quarkus 中覆盖一个单元测试的配置属性

如何覆盖 Quarkus 中的属性?