У меня есть вопрос о подписи JWT методом HS256 в Go. Я использую этот импорт "github.com/dgrijalva/jwt-go"
Для него не требуется длина секретного ключа> = 256 бит (32 байта)?
Давайте скажем, у меня есть серверное приложение, написанное на Golang, которое дает JWT, подписанный с секретным ключом длиной 16 бит. Когда я пытаюсь проверить этот JWT в клиентском приложении (которое написано в Java) с тем же секретным ключом, он выдает мне ошибку:
io.jsonwebtoken.security.WeakKeyException: The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA algorithm.
Ну, эта ошибка Имеет смысл, поскольку длина секретного ключа меньше 256 бит, но как серверному приложению удалось сгенерировать JWT, подписанный секретным ключом размером менее 256 бит, без сообщения об ошибке?
Здесь это функция, которая создает токен доступа:
import(
"time"
"github.com/dgrijalva/jwt-go"
)
func CreateToken(userid uint64) (string, error) {
var err error
//Creating Access Token
atClaims := jwt.MapClaims{}
atClaims["authorized"] = true
atClaims["user_id"] = userid
atClaims["exp"] = time.Now().Add(time.Minute * 15).Unix()
at := jwt.NewWithClaims(jwt.SigningMethodHS256, atClaims)
token, err := at.SignedString([]byte("NRF"))
if err != nil {
return "", err
}
return token, nil
}