1.session是存储在服务器端的内存,每次经过一次认证之后,都要在服务端做一次记录,以方便用户下次请求的鉴别,如果认证用户增加,服务器的开销会很大。
2.用户认证以后,服务端做认证记录,下次请求必须要在这台这台服务器上请求,才能拿到授权资源,这样在分布式的应用中,相应的限制了负载均衡器的能力,也就限制了应用的扩展能力。
3.CSRF因为基于cookie来进行用户识别的,cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
第一部分我们称它为头部(header),
承载两部分信息:
声明类型:jwt
声明加密算法:通常为HMAC SHA256
第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),
有效信息包含两部分:
标准中的注册声明
公共的声明
私有的声明
第三部分是签证(signature).
这个签证信息有三部分:
header(base64后的)
payload(base64后的)
secret
流程上是这样的: