老师,您好!关于jwt认证的疑惑
bobby老师您好,学生想问一个关于jwt用户认证的问题,可能学生问的会显得比较的“弱智”,老师还请见谅!
1、jwt-token生成时,是否会存储在某个地方(存储介质),以便后续用于校验?
还是说没有存储介质,是通过RSA等加解密的方式进行验证?
2、本课程微服务架构中,A服务器(user-web用户服务),B服务器(goods-web商品服务),学生理解的流程,如下:
(1)用户先访问A服务器(user-web用户服务) 登录api 接口 拿到 token,该token以x-token方式在header请求头中携带以便后续请求
(2)用户再访问B服务器(goods-web商品服务),middlewares.JWTAuth()进行token验证
学生疑惑的是:该token是在A服务器获取到的,怎么能在B服务器进行认证呢(可能又回到了第一个问题)
3、jwt-token的认证,是否可以在网关层去做?
4、jwt-token的认证,是否可以单独拉出来做一个服务?
谢谢bobby老师!
正在回答 回答被采纳积分+1
jwt本质上就是无状态token,也就是不需要存储, 这个的好处就是分布式,某个服务,只要知道秘钥就能知道用户是否登录用于做验证, 但是缺点也明显,比如我们想要做只能一地登录,比如我在手机上登录了就要把另一个手机登录的给下架,这个就无法做到了, 还有就是某个token丢失了,我们想要把这个token加入黑名单,就无法做到,一般为了解决这个问题会把token存在redis中,这样就又成了有状态了, 所以还有进一步的就是吧用户是否登录验证放入到一个用户服务,这样的话对于每个服务比如服务C,服务 D,每个请求我们都需要去用户中心校验一次,这样对用户中心压力很大,所以又会衍生出很多其他方案
第二点你的理解是正确的
jwt-token可以在网关做,但是有个问题是网关没有用户信息,用户验证这一块做不了,还是需要由用户中心去做token生成,不过网关倒是可以校验token的合法性
jwt-token一般和用户认证中心集成,单独成一个服务,但是问题就是我上面说的每个请求都去认证中心校验token是否合法,认证中心承担不了这么大压力,所以这就是无状态token的优势了,不然统一的认证中心压力太大
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星