带有自定义 header 和声明的 jsonwebtoken
jsonwebtoken with custom header and claims
正在向 Apple App Store Server 进行身份验证,我得到 header 如下
{
alg: "HS256",
typ: "JWT",
kid: kid
}
和声明的价值如下:
{
iss: issuerID,
aud: audience,
...
}
在 node-jsonwebtoken 库中,我尝试使用 header 作为有效负载和声明作为选项进行签名:
jwt.sign(jwtHeader(), key, jwtClaims(), cb)
这最终会抛出 Error: "iss" is not allowed in "options"
之类的异常。否则,继续收到 401 Unauthorized
响应。我如何使用这个库来适当地签署我的 header 和声明?
当您使用 node-jsonwebtoken 签署令牌时,您通常只会获得默认的 header
{
alg: "HS256",
typ: "JWT"
}
如果您需要 header 中的任何额外值,例如key-id kid
,你可以在options.header
object中添加它们。您需要将选项 object 作为第三个参数传递给符号函数:
const keyId = 123
const jwtOptions = {
header: { kid: keyId }
}
选项 object 也是您可以添加到期时间、设置不同签名算法(默认为 HS256
)或关闭 auto-generated 时间戳 iat
(发布于)。
const jwt = require('jsonwebtoken');
// define the payload
const payload = {
iss: "issuerID",
aud: "audience"
}
const keyId = 123
// extra header values can be defined in the header parameter in the options:
const jwtOptions = {
expiresIn: 300, // 300 seconds
//algorithm: 'HS512', // only necessary if you want a different value than 'HS256'
//notimestamp: true, // don't added timestamp iat (issued at)
header: { kid: keyId
}
}
// pass the options as third parmater (optional)
const token = jwt.sign(payload, "supersecret", jwtOptions);
结果:
header:
{
"alg": "HS256",
"typ": "JWT",
"kid": "123"
}
payload:
{
"iss": "issuerID",
"aud": "audience",
"iat": 1630044877,
"exp": 1630044887
}
正在向 Apple App Store Server 进行身份验证,我得到 header 如下
{
alg: "HS256",
typ: "JWT",
kid: kid
}
和声明的价值如下:
{
iss: issuerID,
aud: audience,
...
}
在 node-jsonwebtoken 库中,我尝试使用 header 作为有效负载和声明作为选项进行签名:
jwt.sign(jwtHeader(), key, jwtClaims(), cb)
这最终会抛出 Error: "iss" is not allowed in "options"
之类的异常。否则,继续收到 401 Unauthorized
响应。我如何使用这个库来适当地签署我的 header 和声明?
当您使用 node-jsonwebtoken 签署令牌时,您通常只会获得默认的 header
{
alg: "HS256",
typ: "JWT"
}
如果您需要 header 中的任何额外值,例如key-id kid
,你可以在options.header
object中添加它们。您需要将选项 object 作为第三个参数传递给符号函数:
const keyId = 123
const jwtOptions = {
header: { kid: keyId }
}
选项 object 也是您可以添加到期时间、设置不同签名算法(默认为 HS256
)或关闭 auto-generated 时间戳 iat
(发布于)。
const jwt = require('jsonwebtoken');
// define the payload
const payload = {
iss: "issuerID",
aud: "audience"
}
const keyId = 123
// extra header values can be defined in the header parameter in the options:
const jwtOptions = {
expiresIn: 300, // 300 seconds
//algorithm: 'HS512', // only necessary if you want a different value than 'HS256'
//notimestamp: true, // don't added timestamp iat (issued at)
header: { kid: keyId
}
}
// pass the options as third parmater (optional)
const token = jwt.sign(payload, "supersecret", jwtOptions);
结果:
header:
{
"alg": "HS256",
"typ": "JWT",
"kid": "123"
}
payload:
{
"iss": "issuerID",
"aud": "audience",
"iat": 1630044877,
"exp": 1630044887
}