新闻中心

基于Token 的鉴权方式

由于session 认证的诸多问题,因此出现了基于token 的鉴权方式,这种方式不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。

基于token 鉴权的工作流程如下:

  • 首先,客户端通过用户名密码来请求对应的API接口

  • 第二,服务器会验证用户的信息

  • 第三,服务器通过验证后会发送token给客户端

  • 第四,客户端存储token,并在每次请求时附送上这个token值

  • 第五,服务端验证token值,并返回数据

这种方式的典型代表就是JWT(Json web token , 它是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

它的特点如下:

  • 体积小(一串字符串)。因而传输速度快

  • 传输方式多样。可以通过 HTTP 头部(推荐)/URL/POST 参数等方式传输

  • 严谨的结构化。它自身(在 payload 中)就包含了所有与用户相关的验证消息,如用户可访问路由、访问有效期等信息,服务器无需再去连接数据库验证信息的有效性,并且 payload 支持应用定制

  • 支持跨域验证,多应用于单点登录

JWT通常由三部分组成:

  • 头信息(header)

  • 消息体(payload)

  • 签名(signature)

如下所示:

// Header { "alg""HS256""typ""JWT" }

// Payload { // reserved claims "iss""a.com""exp""1d", // public claims "http://a.com"true, // private claims "company""A""awesome"true }

// $Signature HS256(Base64(Header) + "." + Base64(Payload), secretKey)

// JWT JWT = Base64(Header) + "." + Base64(Payload) + "." + $Signature 

其工作流程如下:

  • 首先,客户端通过发送HTTP 请求把账号密码发送给服务短,通常使用的是POST请求, 服务器会校验账号与密码是否合法,如果一致,则根据密钥生成一个 token 并返回,客户端收到这个 token 并保存在本地。在这之后,需要访问一个受保护的路由或资源时,只要附加上 token(通常使用 Header 的 Authorization 属性)发送到服务器,服务器就会检查这个 token 是否有效,并做出响应。

  • 服务端接收到 token 之后,会逆向构造过程,解码出 JWT 的三个部分,这一步可以得到 sign 的算法及 payload,结合服务端配置的 secretKey,可以再次进行 $Signature 的生成得到新的 $Signature,与原有的 $Signature 比对以验证 token 是否有效,完成用户身份的认证,验证通过才会使用 payload 的数据。

  • 详情请登录  http://www.xkzjsj.com

    所有课程尽在新科展计算机学校http://www.xkzjsj.com

    联系人倪老师:15543625258微信同步

    QQ2395263754

    详情请登录  http://www.xkzjsj.com

    长春市朝阳区同志街与隆礼胡同交汇火炬大厦9楼新科展计算机学校(桂林路附近)


吉林省新科展高级IT网络培训中心是吉林省最大的计算机培训学校
吉林省新科展高级IT网络培训中心学校常年招生,咨询学习请提前电话联系,登记预约学习时间
新科展承诺:100%推荐就业,规定时间内免费重学。

合作伙伴

计算机培训 培训学校