Значение secret base64 encoded
для jwt.io на самом деле означает, что он обрабатывает предоставленный вами секрет как закодированный base64
и, следовательно, сначала декодирует его, прежде чем он фактически используется.Смысл не в том, чтобы создать что-то другое, а просто в том, чтобы расшифровать секрет при его кодировании.
Секрет, который вы использовали, в ясном виде, не закодирован форма:
qwertypassword
Когда вы base64 кодируете его, например.с помощью https://www.base64encode.org/, вы получите это как закодированное base64 значение:
cXdlcnR5cGFzc3dvcmQ =
On jwt.io Вы можете использовать обе формы:
первая, не закодированная одна с снятым флажком base64 encoded secret
или
второй, base64 кодированный один с установленным флажком .
В обоих случаях вы получите один и тот же результат.
Для вашего Java-кода потребуется дополнительный шаг для декодирования закодированного секрета, прежде чем использовать его для подписи:
import java.util.Base64;
String base64EncodedSecret = "cXdlcnR5cGFzc3dvcmQ=";
byte[] decodedSecret = Base64.getDecoder().decode(base64EncodedSecret);
, а затемкогда вы создаете JWT, вы используете расшифрованный секрет:
.signWith(SignatureAlgorithm.HS256, decodedSecret)
Но это необходимо только в том случае, если вы по какой-то причине получаете секрет в зашифрованном виде.