Я предполагаю, что ключ, который вы используете для создания токена, НЕ совпадает при проверке токена.
openssl rand -base64 32
должен создать случайный ключ, но это маловероятно эти символы для печати. Похоже, что http://jwtbuilder.jamiekurtz.com/
использует ключ, непосредственно введенный в текстовое поле, и НЕ base 64 декодирует его первым. Я никогда не использовал этот сайт, так что это всего лишь предположение.
По сути, это означает, что один из ключей:
byte[] key = Base64.getDecoder().decode("b8SwFJZVgo+S5Cuhf5LWUeXpHxDm5mp30GCuQHX2TpY=");
, а другой:
byte[] key = "b8SwFJZVgo+S5Cuhf5LWUeXpHxDm5mp30GCuQHX2TpY=".getBytes()
Первый вариант - лучшая практика, но я предполагаю, что когда вы заходите на этот сайт, вы захотите использовать второй вариант.