为什么Quarkus JWT在每个端点上都返回未经授权
我正试图用JWT保护我的Quarkus API。提供了JWT(代码段:为什么Quarkus JWT在每个端点上都返回未经授权,jwt,quarkus,microprofile,Jwt,Quarkus,Microprofile,我正试图用JWT保护我的Quarkus API。提供了JWT(代码段:载体eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUI[…]) 以下端点是我测试过的两个端点: @Path(“/quick”) @请求范围 公共类资源{ @注入 jsonwebtokenjwt; @职位 @允许的角色({“magister”}) @路径(“/save”) @使用(“应用程序/json”) @产生(“*/*”) @交易的 公共响应保存(@RequestBody quick-quick){}
载体eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUI[…]
)
以下端点是我测试过的两个端点:
@Path(“/quick”)
@请求范围
公共类资源{
@注入
jsonwebtokenjwt;
@职位
@允许的角色({“magister”})
@路径(“/save”)
@使用(“应用程序/json”)
@产生(“*/*”)
@交易的
公共响应保存(@RequestBody quick-quick){}
@得到
@佩尔米塔尔
@路径(“/get/all”)
@生成(“应用程序/json”)
公共响应getAll(){}
两个端点(@PermitAll
和@RolesAllowed
)都在向我返回HTTP401
(未经授权)
你知道为什么吗?我以为@PermitAll
允许每个请求?即使我的令牌证明我有所需的角色:
“资源访问”:{
“客户端接口”:{
“角色”:[“魔法师”]
},
...
}
编辑:
发现文件规范上说
"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"
}
但是我仍然会得到401响应我有同样的问题,我通过添加以下代码来修复它:
@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版。最终版啊,很酷,谢谢!