如何在Quarkus中禁用安全性。

9

我在我的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
@Turing85 至少要关闭oauth2功能,请查看我上面的编辑 - Marian Klühspies
3个回答

5

您可以实现一个授权控制器(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的链接可以供参考。

1
您还可以定义一个属性quarkus.security.auth.enabled-in-dev-mode=false,以获得相同的结果,但该选项仅在开发/测试模式下有效。 - KnechtRootrecht

2
使用以下的Quarkus配置:
quarkus.http.auth.proactive=false

2

看起来你正在使用MicroProfile JWT RBAC,因此请设置以下内容:quarkus.smallrye-jwt.enabled=false

更广泛的信息,请参阅此处的JWT RBAC属性,在所有可用属性的上下文中。


谢谢。我尝试过了,它可能确实禁用了JWT,但我的路由仍需要角色来授权调用。 - Marian Klühspies
1
为了以迂回的方式(在我看来,最小的努力)到达那里,请保持quarkus.smallrye-jwt.enabled=false设置,然后使用属性文件安全域(https://quarkus.io/guides/security-properties#properties-files-realm-configuration)。在application.properties中使用%test前缀定义每个属性(或者通过env或系统属性进行定义),以便它们仅在测试期间运行。application.properties示例:%test.quarkus.smallrye-jwt.enabled=false,%test.quarkus.security.users.file.enabled=true等等。 - John Clingan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接