当前位置: 首页 > 知识库问答 >
问题:

为什么Quarkus JWT在每个endpoint上都未经授权返回

傅明知
2023-03-14

我正在尝试用JWT保护我的Quarkus API。提供了JWT(代码段:承载EYJHBGCIOIJSUZI1NIISINR5CCIGOIAISLDUI[...])。

@Path("/quiz")
@RequestScoped
public class SomeResource {
  @Inject
  JsonWebToken jwt;

  @POST
  @RolesAllowed({"magister"})
  @Path("/save")
  @Consumes("application/json")
  @Produces("*/*")
  @Transactional
  public Response save(@RequestBody Quiz quiz) { }

  @GET
  @PermitAll
  @Path("/get/all")
  @Produces("application/json")
  public Response getAll(){ }

两个endpoint(@permitall@rolesalloved)都返回一个HTTP401(未经授权)。

你知道为什么吗?我以为@permitall允许每一个请求?即使我的令牌证明我有所需的角色:

json prettyprint-override">"resource_access" : {
  "client_interface" : {
    "roles" : ["magister"]
  },
  ...
}

编辑:发现MicroProfile规范说

"groups":["magister"]
{
  [...]
  "resource_access": {
    "client_interface": {
      "roles": [
        "magister"
      ]
    },
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    }
  },
  "scope": "profile email",
  "email_verified": false,
  "groups": [
    "magister"
  ],
  "preferred_username": "magister"
}

共有1个答案

万俟炯
2023-03-14

我也有同样的问题,我通过添加以下代码修复了它:

@OpenAPIDefinition(
        info = @Info(
                title = "Title API",
                version = "1.0.0",
                description = "Description API"
        ),
        security = @SecurityRequirement(name = "jwt"),
        components = @Components(
                securitySchemes = {
                        @SecurityScheme(
                                securitySchemeName = "jwt",
                                description = "Token JWT",
                                type = SecuritySchemeType.HTTP,
                                scheme = "bearer",
                                bearerFormat = "jwt"
                        )
                }
        )
)

并将Quarkus更新到1.12.0.final版本

 类似资料:
  • 我按照这里的教程尝试开始使用spring OAuth。但是,没有页面返回未经授权的401,即使我没有通过服务器验证(本教程中的配置示例应该禁用匿名访问。本教程中与此问题相关的唯一注释只有一个响应,即授权尚未启用,但我在其中一个配置类上有。 所有配置类 应用: “安全”: 可能不相关,但也有: 在通读了教程的完整源代码后,我添加了 最后,这个项目的,因为我在使用Spring时经常遇到特定版本依赖关系

  • 所以,我试图用Tweepy喜欢一个推文,但是这个错误正在发生: 有什么想法吗?

  • 我创建了一个web app Maven项目,该项目使用RestEasy作为RESTful应用程序框架。 我的文件如下所示: 我已经将自动扫描设置为true,并创建了几个类来满足endpoint访问的需要。 但问题是,我的浏览器抛出“404 not found”,尽管我已经在类中指定了endpoint参数。 示例endpointURL:http://localhost:8080/me.randyta

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我有一个Quarkus项目,它公开了一些RESTendpoint。当在开发模式下工作或从本地构建docker容器中运行时,所有工作都很好,那些用@rolesalloved和@permitall注释的endpoint都正常工作。但是当我按照以下步骤部署到AWS服务时: 提交到Gitlab 运行Gitlab cicd 将结果与配置一起发送到AWS S3 bucket 触发AWS CodePipelin

  • 我正在使用postman,并尝试通过http://localhost:8180/auth/admin/realms/demo/users/{userID}更新用户的配置文件,但收到响应。 通过http://localhost:8180/auth/admin/realms/demo/users/{userID}发送带有Json内容类型和用户信息的Put请求。 不幸的是,我已经连续收到了401个回复。