【发布时间】:2019-05-24 19:43:12
【问题描述】:
我希望能够在 Flutter (dart) 中对 JWT 令牌进行编码,并在 nodejs 中对其进行解码,以便将其用作 firebase 的谷歌函数。
问题是当我尝试使用 nodejs 对其进行解码时,flutter 中的编码字符串会产生无效的令牌。
在这两种情况下,我都使用 HS256 加密。
这是我的颤振代码:
import 'package:jaguar_jwt/jaguar_jwt.dart';
final String emailTrackingJwtSecret = '<SECRET>';
String generateEmailTrackingJwtToken(String uid, String scanId, String composeId) {
final claimSet = new JwtClaim(
payload: {<PAYLOAD_DATA>}
);
final String token = issueJwtHS256(claimSet, emailTrackingJwtSecret);
print(token);
return token;
}
这是我的 nodejs 代码来解码它:
const jwt = require('jsonwebtoken');
const secret='<SECRET>';
const decoded = jwt.verify(code2,secret);
当我尝试在颤振中使用相同的秘密对相同的数据进行编码时,我得到以下令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDU5MjMwNTgsImlhdCI6MTU0NTgzNjY1OCwicGxkIjp7ImNvbXBvc2VJZCI6ImEyIiwic2NhbklkIjoiYTEiLCJ1aWQiOiJrZmlyIn19.INf2n8J3yA4KPlYToARNCJnDvDQWcobWs-abaPCn_FE=
在 nodejs 中,当我对得到的相同数据进行编码时:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJrZmlyIiwic2NhbklkIjoiYTEiLCJjb21wb3NlSWQiOiJhMiIsImlhdCI6MTU0NTgzNzEwM30.DWfGOppzqnmGmfP3OFY81S_0l2qR1ATH0nqMG7vcWMw
所以令牌不同.. 我在https://github.com/auth0/node-jsonwebtoken 上阅读,默认加密是HS256,所以我错过了什么?
谢谢
【问题讨论】: