解码jwt令牌 - 它安全吗?

时间:2014-06-25 21:54:12

标签: node.js socket.io jwt

使用express,socket.io和使用jwt

的基于令牌的身份验证设置测试服务器

看过这个教程 https://auth0.com/blog/2014/01/15/auth-with-socket-io/

在服务器端,教程记录解码的令牌

console.log(socket.handshake.decoded_token.email, 'connected');

但是当我尝试记录socket.handshake.decoded_token时,变量未定义。socket.handshake不包含带解码标记的任何变量

所以..我试图谷歌如何解码令牌并找到这个页面 https://developers.google.com/wallet/digital/docs/jwtdecoder

我粘贴了公共令牌,脚本在没有jwtSecret的情况下解码了令牌!?嗯...然后我在思考..如果脚本可以在没有秘密的情况下解码令牌,那么它是如何安全的??

作为身份验证返回给客户端的公共令牌

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwibmFtZSI6ImNsYXJrIiwiZW1haWwiOiJjbGFya0BlbGVjdHJvYmVhdC5kayIsImlhdCI6MTQwMzczMTkyMSwiZXhwIjoxNDAzNzM1NTIxfQ.mVFymk6gKBPmcVObB_3ydqbJTlcv4eVNYBcahsjg0g8

2 个答案:

答案 0 :(得分:1)

令牌未加密,只是编码。

使用您的秘密构建的签名是重要的位,并确保令牌未被篡改。

这是一个体面的(和短的)writeup that explains that in a bit more detail

答案 1 :(得分:0)

关于天气,你信任令牌的发行者,以提供自己的令牌。任何人都可以解码它,任何人都可以编码完全相同的json有效负载,但只有你可以根据你的密钥来决定天气签名是否得到验证。

因此,如果你在某个地方放弃你的jwt秘密的潜在违规情况,你应该能够改变秘密,并基本上使所有已发行的令牌无效。