Я генерирую JSON веб-подпись в JavaScript с использованием пакета node-jws (https://www.npmjs.com/package/jws). В заголовках я даю крит: ["exp"] и exp: someTimeStamp. Приведенный ниже фрагмент кода используется для создания JWS:
let token = jws.sign({
header: { alg: 'HS256', crit: ["exp"], exp: Math.floor(Date.now() / 1000) + (60 * 60) },
payload: "somestring" ,
privateKey: 'supersecret',
});
Я проверяю этот токен в Golang, используя приведенный ниже фрагмент:
import (
"github.com/square/go-jose"
)
func main() {
jsonWebSig, err := jose.ParseSigned(token)
if err != nil {
panic(err)
}
payload, err := jsonWebSig.Verify([]byte("supersecret"))
fmt.Println(string(payload))
fmt.Println(err)
}
Код выше в GO работает, если я не дам крит: ["exp"] в заголовке при генерации токена в JS. В противном случае выдает ошибку «1010».
Я должен использовать crit: ["exp"] в заголовках любой ценой. Есть ли способ проверить это?