解码jwt令牌 – 是否安全?

使用express,socket.io和基于令牌的authentication来build立testing服务器

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

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

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

但是,当我尝试loginsocket.handshake.decoded_tokenvariables是未定义的socket.handshake不包含任何variables与解码令牌

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

我粘贴公共令牌和脚本解码令牌没有jwtSecret!? 嗯…然后我在想..如果脚本可以解密令牌而没有秘密,怎么可能安全呢?

作为authentication返回给客户端的公共令牌

 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwibmFtZSI6ImNsYXJrIiwiZW1haWwiOiJjbGFya0BlbGVjdHJvYmVhdC5kayIsImlhdCI6MTQwMzczMTkyMSwiZXhwIjoxNDAzNzM1NTIxfQ.mVFymk6gKBPmcVObB_3ydqbJTlcv4eVNYBcahsjg0g8 

令牌不encryption,只是编码。

用你的秘密build立的签名是重要的一点,并确保令牌没有被篡改。

这是一个体面的(和简短的) 写法,更详细地解释了这一点

这是关于天气,你相信令牌发行人提供索赔是由自己的标记举行。 任何人都可以解码,任何人都可以编码完全相同的JSON有效载荷,但只有你可以根据你的秘密密钥来决定天气签名是否得到validation。

因此,在某个潜在的违规情况下,您可以在某个地方放弃您的jwt秘密,您应该可以更改秘密,并基本上使所有已发布的令牌无效。