Пакет go-bindata выглядит так, как будто вас интересует.
https://github.com/go-bindata/go-bindata
Это позволит вам преобразовать любой статический файл в вызов функции, который может быть встроен в ваш код и будет возвращать байтовый фрагмент содержимого файла при вызове.
Вам необходимо преобразовать строку ключа в экземпляр Java Key
.
Кодируется ли ваша ключевая строка в Base64? Если это так, сделайте следующее:
@Value("${jwt.token.secret}")
private String secret;
private Key getSigningKey() {
byte[] keyBytes = Decoders.BASE64.decode(this.secret);
return Keys.hmacShaKeyFor(keyBytes);
}
JwtToken.builder().value(Jwts.builder()
.setClaims(createClaims(account))
.setSubject(subject.toString())
.setIssuedAt(Date.from(createdDateTime))
.setExpiration(Date.from(expirationDateTime))
.signWith(getSigningKey())
.compact()).expiration(expirationDateTime.toString()).build()
Если ваш ключ не закодирован в base64 (и, вероятно, так и должно быть, потому что, если вы, например, используете необработанный пароль, ваш ключ, вероятно, неверный или плохо формируется), вы можете сделать это с помощью:
private Key getSigningKey() {
byte[] keyBytes = this.secret.getBytes(StandardCharsets.UTF_8);
return Keys.hmacShaKeyFor(keyBytes);
}
Этот второй пример, как правило, не рекомендуется, поскольку, скорее всего, это означает, что у вас плохо сформированный ключ. Правильно сформированный, безопасный-случайный ключ не читается человеком, поэтому для хранения его в виде строки байты ключа обычно сначала кодируются с помощью base64.
Из документации https://github.com/jwtk/jjwt#jws-key-create :
Если вы хотите сгенерировать достаточно сильный SecretKey для использования с помощью алгоритмов JWT HMAC-SHA используйте вспомогательный метод
Keys.secretKeyFor(SignatureAlgorithm)
:SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256); //or HS384 or HS512
Под капотом JJWT использует KeyGenerator провайдера JCA для создания безопасного случайного ключа с правильной минимальной длиной для заданного алгоритм.
Если у вас есть существующий байтовый массив HMAC SHA SecretKey, вы можете использовать вспомогательный метод
Keys.hmacShaKeyFor
. Например:blockquote>byte[] keyBytes = getSigningKeyFromApplicationConfiguration(); SecretKey key = Keys.hmacShaKeyFor(keyBytes);