使用带有 RS256 加密的 express-jwt 在应用程序路由上解码 JWT 令牌会抛出未经授权的错误
Decoding JWT token on app route using express-jwt with RS256 encryption throws UnAuthorized Error
我正在使用 Keycloak 进行身份验证,并使用它的中间件为我的请求附加了一个令牌。我试图编写一个 api 路由来使用该令牌检索用户数据,但是,我收到以下错误:
UnauthorizedError: error:0909006C:PEM routines:get_name:no start line
目前我正在访问“/protected/”路径上的用户数据
app.get('/protected', jwt({
secret: Buffer.from(process.env.TOKEN_SECRET as string),
algorithms: ['RS256'],
requestProperty: 'auth',
getToken: (req: any) => {
const token = req?.kauth?.grant?.access_token;
if (token) {
console.log(token.token.toString())
return token.token.toString();
}
return null;
}
}), (req: any, res: any) => {
return res.json(req.auth)
});
我正在从 keycloak 控制台获取我的 public 密钥 - 但我仍然收到该错误。
** 编辑 **
将第一行和最后一行添加到秘密后:
`-----BEGIN PUBLIC KEY-----\r\n${Buffer.from(process.env.TOKEN_SECRET as string)}\r\n-----END PUBLIC KEY-----`
我现在收到一个新错误:
UnauthorizedError: No authorization token was found
Keycloak return 第一行和最后一行基本上是页眉和页脚。所以需要自己添加。
const publicKey = `-----BEGIN PUBLIC KEY-----\r\n${public_key}\r\n-----END PUBLIC KEY-----`
并在 express-jwt 中使用它
我正在使用 Keycloak 进行身份验证,并使用它的中间件为我的请求附加了一个令牌。我试图编写一个 api 路由来使用该令牌检索用户数据,但是,我收到以下错误:
UnauthorizedError: error:0909006C:PEM routines:get_name:no start line
目前我正在访问“/protected/”路径上的用户数据
app.get('/protected', jwt({
secret: Buffer.from(process.env.TOKEN_SECRET as string),
algorithms: ['RS256'],
requestProperty: 'auth',
getToken: (req: any) => {
const token = req?.kauth?.grant?.access_token;
if (token) {
console.log(token.token.toString())
return token.token.toString();
}
return null;
}
}), (req: any, res: any) => {
return res.json(req.auth)
});
我正在从 keycloak 控制台获取我的 public 密钥 - 但我仍然收到该错误。
** 编辑 **
将第一行和最后一行添加到秘密后:
`-----BEGIN PUBLIC KEY-----\r\n${Buffer.from(process.env.TOKEN_SECRET as string)}\r\n-----END PUBLIC KEY-----`
我现在收到一个新错误:
UnauthorizedError: No authorization token was found
Keycloak return 第一行和最后一行基本上是页眉和页脚。所以需要自己添加。
const publicKey = `-----BEGIN PUBLIC KEY-----\r\n${public_key}\r\n-----END PUBLIC KEY-----`
并在 express-jwt 中使用它