oAth2(一)

oAth2

背景

传统登录状态出现问题

  • 多个服务分别部署,需要分别登录
  • 第三方应用介入对用户登录信息的需求
  • 用户无法限制第三方应用在某个微服务中的授权范围和使用期限
  • 用户修改登录信息对第三方的应用影响
  • 第三方应用的破解会导致用户密码泄露

OAth2

架构模式

30ef50ac37cf297f7235423dca467a0

交互过程

1565248279599

开放平台

交互模型

  • 资源拥有者:用户
  • 客户端:APP
  • 服务提供方:
    • 认证服务器
    • 资源服务器

步骤:

  1. 用户 - 输入账号密码 -> 腾讯提供的开放平台(提供:给谁授权、授权范围)

    a

  2. 腾讯提供的开放平台登录成功 - 有道云笔记 授权码-> 有道云笔记根据授权码访问腾讯 认证服务器去拿 访问令牌,用 访问令牌 去腾讯的 资源服务器资源服务器 根据令牌上的(授权人 & 授权范围 ) 提供相应的资源:(用户昵称、头像、性别)。

    1565250055507

  1. 有道云笔记根据获取的信息先注册个账号(填入相关信息 : 不过你还要再完善相关信息:手机这些)

  2. 总结:开放平台只是获取部分信息,简化一定的注册流程

遵循OAuth2.0协议 即接口

提供认证和授权标准

例如:接口JAP @Table @Column @Id Hibernate实现

用Spring Security 实现

令牌的访问与刷新

原始令牌风险

url:http://www.sdfsdf/usr/token=123

  1. toekn被人发现,被爬虫一直刷
  2. token一直在,别人抓包,就能抓到令牌,数据被别人拿去。

解决方案:

  • 令牌刷新,用旧令牌获取新令牌:传入refresh_token 、 client_id 认证服务器通过会返回新的Access Token
  • 要求: Refresh Token 保存在客户端服务器
  • client_secret机制:client_id(客户端) <-> client_secret(服务端),在申请client_id会一起把client_secret分配给客户端,client_secret ##妥善保管在服务器##,刷新Access Token ,需要验证client_secret。

url变成:

url:http://www.sdfsdf//refresh?refresh_token=&client_id=&client_secret=

所以第三方应用提供:

  • appId = client_id
  • appSecret = client_secret

客户端授权模式

  1. 简化模式

    纯静态页面应用,APP,小程序,HTML5,第三方天气,个人博客,只有前端js控制权。

  2. 授权码模式

    1565253618597

  3. 密码模式

    1565253750375

  4. 客户端模式

    1565253843719

总结:

1565253981885

+访问令牌+ access Toekn + Refresh Toekn

0%