说起身份认证,可能大家的第一反应就是Session认证,其通过在服务端保存一份用户登录信息,并返回一个SessionId保存在Cookie中,这样在下次请求时就可以通过SessionId来识别用户。
我们通常会采用Spring-Session-Data-Redis组件来实现,正常使用情况下不会有任何问题,但是如果服务达到每秒万级别的调用量时,如何解决应用系统与Redis的远程调用开销导致的响应能力下降?如果Redis发生异常中断服务时,如何来保证认证服务?这些都值得我们去思考,是不是可以去中心化呢,是不是可以将认证无状态化呢?
答案肯定是可以的,那么就有请今天的主角,一款无状态认证神器:JWT。
==========================================================
什么是JWT:(WHAT)
JSON Web Token(以下简称 JWT)是一套开放的标准(RFC 7519),它定义了一套简洁(compact)且 URL 安全(URL-safe)的方案,以安全地在客户端和服务器之间传输 JSON 格式的信息。
什么场景用JWT:(WHEN)
最常见的场景为单点认证场景,即用户认证后会获取专属的JWT,那么在后续的每个请求中都将会携带JWT,然后服务端可通过JWT来识别用户身份,同时也可根据JWT中的信息来控制路由、服务和资源。
为什么用JW