У меня очень простой пример конечной точки, и я пытаюсь проверить, содержит ли одно из утверждений 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
?