如何禁用 Quarkus 中的安全性

问题描述 投票:0回答:4

我已经在 Quarkus 应用程序中实现了 JWT RBAC,但我不想在本地测试应用程序时提供令牌。

编辑:

到目前为止我所尝试的是将这些属性设置为“false”,但没有任何效果。

quarkus.oauth2.enabled=false
quarkus.security.enabled=false
quarkus.smallrye-jwt.enabled=false

目前我已经注释掉了所有

 //@RolesAllowed({"user"})

在本地“禁用”身份验证。

是否有任何属性可以禁用安全性/启用任何给定角色的端点?

java security rbac quarkus disable
4个回答
5
投票

您可以实现一个 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

更广泛的仅供参考,您也可以在所有可用属性的上下文中找到 JWT RBAC 属性。


2
投票

使用以下 quarkus 配置:

quarkus.http.auth.proactive=false

0
投票

聚会迟到了,但可能对这个问题的未来访问者有所帮助:自 Quarkus 2.8 起,有一个禁用授权的配置选项:

quarkus.security.auth.enabled-in-dev-mode

我将其用于我的

application.yaml
中的开发配置文件:

"%dev":
  quarkus:
    security:
      auth:
        enabled-in-dev-mode: false

有关此属性的信息:https://quarkus.io/guides/security-customization#disabling-authorization

对于单元测试,您不需要禁用授权,但可以在需要基于角色的身份验证的测试类或方法上使用注释

io.quarkus.test.security.TestSecurity
,它是依赖关系的一部分
io.quarkus:quarkus-test-security

使用安全上下文测试端点的示例,该端点具有具有角色

read-all
的经过身份验证的用户:

@QuarkusTest
@TestSecurity(user = "testUser", roles = {"read-all"})
public class MyEndToEndTestWithAuth { // ...

更多信息:https://quarkus.io/guides/security-testing#testing-security

请注意,我还使用以下配置作为测试配置文件来禁用 OIDC 租户以避免启动失败,也许您也需要这个:

"%test":
  quarkus:
    oidc:
      tenant-enabled: false
© www.soinside.com 2019 - 2024. All rights reserved.