You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus中JWT角色验证失效,@RolesAllowed拦截所有请求如何解决?

问题解决步骤

1. 确认依赖配置

先确保项目中已添加Quarkus JWT扩展依赖:

<!-- Maven 配置 -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-jwt</artifactId>
</dependency>
// Gradle 配置
implementation 'io.quarkus:quarkus-smallrye-jwt'

2. 映射角色声明字段

Quarkus默认不会自动识别你JWT里使用的微软标准角色声明URI,需要在application.properties中手动指定角色对应的Claim键:

# 指定从JWT的该URI字段读取角色信息
smallrye.jwt.roles-claim=http://schemas.microsoft.com/ws/2008/06/identity/claims/role

3. 配置签名验证参数

你的JWT采用HMAC-SHA256算法签名,需在配置文件中添加验证密钥:

# 替换为你的实际HMAC密钥
smallrye.jwt.verify.key-value=your-real-hmac-secret

如果密钥存储在文件中,可改用:

smallrye.jwt.verify.key.location=path/to/your/secret.key

4. 匹配发行方信息

配置JWT中的iss字段校验,确保与令牌一致:

smallrye.jwt.issuer=IMS.company.com

5. 检查JWT有效期

你的JWT过期时间戳为1677257784(对应2023年2月24日),确认当前时间未超出该范围,否则令牌会被判定失效。

6. 规范请求携带方式

请求时必须在请求头中正确携带JWT:

Authorization: Bearer <你的完整JWT字符串>

完成以上配置后,Quarkus就能正确识别JWT中的角色权限,@RolesAllowed({"Admin"})只会拦截无Admin角色的请求。

内容的提问来源于stack exchange,提问作者Section

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:48:18