聊聊Token那些事儿(第一篇:认识Token)

可能大家都听说过Token,可能也接触过Token,但对与Token可能还是隔雾看花。今天就让我们拨开云雾,看看这Token。

Token 简单直译,就是令牌。其实就是一个许可验证方式。

Token一般作用于做于身份验证上。主要体现在授权方面。

我们为什么需要授权:

当第三方应用想要获取当前应用的访问权限的时候,我们为了防止用户密码被盗用,一般不直接向第三方提供用户的账户和密码,而是由第三方申请授权,由用户进行同意授权,然后当前应用给第三方应用颁发授权信息(授权Token)。

今天,让我们先来弄清下面几个问题:

一、我们为什么要用Token ?

有人说,Token好啊,就用Token了。

①、先来看看Token的特性:

1、无状态,可拓展

因为Token是一串明文的字符串,不包含任何状态信息。使用Token,节省了服务器存储session的开销,提高的服务器的拓展能力。我们一般把Token写到http请求头中,以保证Http请求的无状态。

2、支持移动设备(当客户端是原生平台时,cookie不被支持,可采取Token方式)

3、跨程序调用(避免了跨域资源共享的问题)

4、安全(签名校验机制。如果Token被人拿走了,那么这和sessionid被人拿走的结果是一样的,一如可以设置httponly防止session读取,我们也可以有方法验证Token的有效性)

②、Token和session的较量:

session是由服务器生成并保存到服务器上。每一个请求,都会生成相应的session并且对应着一个sessionid,并把这个sessionid回写到客户端的cookie中,在下次请求的时候附带上这个id。如果访问量过大,无疑会对服务器造成巨大的压力。另外session只存储在当前服务器中,如果需要单点登陆功能呢?怎么解决应用模块部署在不同的服务器上的问题呢?

有人说:我可以使用session共享,把session保存到独立的一台服务器上,谁用谁来取就好了。

但是session服务器挂掉了呢。

我们可以通过Token来解决这些问题。

客户登陆,验证通过后,服务器根据客户的登陆信息生成Token返回给客户端。这个Token由客户端保存,客户端的每次请求都附带上这个Token,服务器只做Token的有效性验证。这种方式减少了服务器的资源消耗,也不怕session丢失导致用户需要重新登陆的问题了,同时也解决了跨域资源共享的问题。

另外上面也说了,如果不同应用之间授权访问,也需要采取Token了。

因为不再依赖cookie所以避免了对CSRF(跨站请求伪造)的防范。

二、Token可以应用在哪些方面

我们所熟知的OAuth授权认证,登陆认证

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值