0

我正在使用 node-jws 包(https://www.npmjs.com/package/jws)在 JavaScript 中生成 JSON Web 签名。在标题中,我给出了 crit: ["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)
}

如果我在 JS 中生成令牌时没有在标题中给出 crit: ["exp"] ,则 GO 中的上述代码有效。否则,它会给我错误的说法square/go-jose: error in cryptographic primitive

我必须不惜一切代价在标题中使用 crit: ["exp"] 。有没有办法验证这一点?

4

0 回答 0