Quarkus SmallRye JWT Заявки не могут быть использованы - PullRequest
0 голосов
/ 13 февраля 2020

У меня очень простой пример конечной точки, и я пытаюсь проверить, содержит ли одно из утверждений 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) возвращает ложь. Похоже, что это потому, что jwt.getClaim("authorities") на самом деле возвращает List<javax.json.JsonString>. К сожалению, не похоже, что я могу разыграть JsonString до java.lang.String. Кроме того, вызов .toString() не делает ничего полезного. Как бы я go увидел, есть ли конкретное значение в этом массиве authorities?

...