使用go进行 JWT 验证
发布时间:2020-12-16 18:03:31 所属栏目:大数据 来源:网络整理
导读:对于使用负载均衡的服务器来说,使用 JWT(JSON WEB TOKEN) 是一个更优的选择,session受到单台服务器的限制,一个用户登录过后就只能分配到 这一台服务器上,这和负载均衡的初衷不一致啊,而 jwt 就解决了这类的痛点 使用 JWT 的场景 身份验证 用户在登录过后服务
对于使用负载均衡的服务器来说,使用 JWT(JSON WEB TOKEN) 是一个更优的选择,session受到单台服务器的限制,一个用户登录过后就只能分配到 使用 JWT 的场景
JWT 的结构JWT 是由
{ "alg": "HS256","typ": "JWT" } // base64编码的字符串`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9` 这里规定了加密算法,hash256
{ "sub": "1234567890","name": "John Doe","admin": true } // base64编码的字符串`eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9` 这里的内容没有强制要求,因为 paylaod 就是为了承载内容而存在的,不过想用规范的话也可以参考下面的 * iss: jwt签发者 * sub: jwt所面向的用户 * aud: 接收jwt的一方 * exp: jwt的过期时间,这个过期时间必须要大于签发时间 * nbf: 定义在什么时间之前,该jwt都是不可用的. * iat: jwt的签发时间 * jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
是用 HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload),secret) 这里 这样组合起来之后就是一个完整的 jwt 了: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.4c9540f793ab33b13670169bdf444c1eb1c37047f18e861981e14e34587b1e04 这里有一个用 go 加密和验证 jwt 的 demo 总结选择 jwt 最大的理由:
不过 jwt 不保证的安全问题:
为了安全还是要上 https 相关推荐: 博客原文 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |