不能使用Quarkus SmallRye JWT声明

时间:2020-02-13 00:42:27

标签: jwt quarkus smallrye

我有一个非常简单的示例端点,并且我正在尝试检查JWT声明中是否包含一个值:

@Path("/admin")
class AdminController(
  val jwt: JsonWebToken
) {
  companion object {
    private val allowedAuthority = "api:can-manage-account"
  }

  @POST
  @Path("/{accountId}")
  @Produces(MediaType.APPLICATION_JSON)
  fun initiateTransfer(@Context ctx: SecurityContext, @PathParam accountId: String) {
    val authorities: List<String> = jwt.getClaim("authorities")
    println(authorities.contains(allowedAuthority)) // false
  }
}

authorities是一个字符串数组。我看到的问题是,即使authorities声明确实包含正确的值。 authorities.contains(allowedAuthority)返回false。看来这是因为jwt.getClaim("authorities")实际上返回了List<javax.json.JsonString>。不幸的是,我似乎无法将JsonString转换为java.lang.String。另外,调用.toString()并没有任何用处。我将如何查看该authorities数组中是否有特定值?

0 个答案:

没有答案