JWT(JSON Web Tokens) 用户认证

2018-08-14  本文已影响41人  snow4web

本文介绍 Web 应用中实现用户认证的一种新方式 JWT(JSON Web Tokens) 。

由于工作需要最近返修一个 Web 项目的restfull api服务端。考虑到这个应用涉及到不同的客户端有pc端,ios app,和小程序,不得不重新设计服务端的架构。

老系统用户认证采用的是session的方式来实现用户认证,存在几个问题。

  1. api server是分布式的, 存在多个server, 用户在一个 server 上登录了,下一次请求可能访问到另外一个server,这个时候无法去读到session。
  2. 客户端 使用 restfull api 来获取数据, restfull api 的原则是 stateless, 但使用 session, 使用 session 和 cookies 会引入 state; 另外, 当 API server 与 app server 可能是两个 server, 需要 允许 CORS(Cross-Origin Resource Sharing), 但是 cookies 只能在同一个 domain 中使用。
  3. app 可能需要访问很多个server,每个server都必须要设置cookie。

解决办法: 使用 JWT 方式来验证用户

JWT 方案不使用 session 基于 token.用户注册之后, 服务器生成一个 JWT token返回给浏览器, 浏览器向服务器请求
数据时将 JWT token 发给服务器, 服务器用 signature 中定义的方式解码
JWT 获取用户信息.


jwt

一个 JWT token包含3部分:

  1. Header: 指定加密算法和 token 类型
  2. Payload: 必须使用 sub key 来指定用户 ID, 还可以包含其他业务信息如用户名,权限。
  3. Signature: 用来加密Header和Payload生成签名。

未完待续。。。

上一篇下一篇

猜你喜欢

热点阅读