Cookie和Authorization(登录和授权)

938 阅读2分钟

词条解析

  • 登录:身份认证的过程
  • 授权:把权限授予交给某个用户,计算机通信中这个权限就比如令牌token,电视剧中的“尚方宝剑”也可以看作是一个授权

Cookie和Authorization

Cookie

Cookie的起源:网景公司为用户做的一个网站购物车需求

  • 把任何服务器希望用户存在本地的内容都存在用户的本地

Cookie的工作机制

早期Cookie实现购物车功能的示例 1

Cookie的作用

  • 使用Cookie管理登录状态 sessionid记录当前通话,服务器可以保存多个sessionid
    • 2
  • 个性化:用户偏好、主题
    • client_id标记,服务器返回记录的客户端偏好或主题
    • 3
  • Tracking:分析用户行为,描述用户画像
    • 第三方公司通过cookie记录用户访问的网站等,更精准地描述用户画像,推广广告,这已经是一个非常成熟的商业模式
    • 4

Cookie攻击

  • XSS (Cross-site scripting): 跨站脚本攻击 如何预防:HttpOnly标记之后js将无法拿到用户cookie
Set-cookie:session_id=123;HttpOnly
  • XSRF (Cross-site request forgery): 跨站请求伪造

Authorization

Basic

gitHub目前就采用了这种格式
格式:Authorization: Basicusername:password(Base64ed) 5

Bearer

可以理解为持票人方式
格式:Authorization: Bearer

OAuth2

  • 如图:三方登录授权过程,以掘金为例:使用微博登录,实际上就是微博把权限授予了掘金,允许掘金获取用户微博账号的某些关键信息,如账号id,账号名,头像等
    • 6
  • 从技术角度上,授权登录更准确地讲应该叫社交网络登录,国内把授权登录称作三方登录更多是从产品角度来讲的
OAuth2流程

以掘金github登录为例,分为授权和登录两个流程

  • 授权流程
    • 7
  • 登录流程
    • 8

微信登录是一个典型的OAuth2流程

自家App中使用Bearer Token

Refresh Token

目的:安全

  • 通过refresh_token也就是原来的token(母钥匙)获取新的有效token:ascess_token
  • 当 access token 失窃时,可以保证盗窃者在未被发现的情况下也只能在一段时间内使用 token,并且在发现 token 失窃之后可以立即换上新的 token 而无需用户重新授权
{
    "token_type": "Bearer",
    "ascess_token": "xxXxx",
    "refresh_token": "xxxXX",
    "expires_time": "xxXxx"
}