05 oauth2

作者: 格林哈 | 来源:发表于2020-09-28 11:24 被阅读0次
  • 平台商通过OAuth协议,提示用户对第三方软件厂商(ISV)进行授权,使得第三方软件厂商能够使用平台商的部分数据,对用户提供服务
  • OAuth协议并不需要触及用户的账户信息,即用户名密码,便可以完成第三方对用户信息访问的授权

0 基础

  • 第三方应用 首先要向平台商申请 appid,secret,设置回调地址。

1 授权类型

1.1 授权码模式

  • 是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动

  • 流程

    • 用户访问第三方应用,第三方应用把用户引导向平台商。
    • 用户在平台商页面输入账号密码,登录,授权。
    • 用户给与授权,平台商 重定向 第三方用户回调地址 并附带一个授权码(如微信登陆的code)。
    • 第三方应用拿授权码向平台商授权接口获取令牌(access_token)。
    • 第三方应用通过 令牌(access_token) 获取平台商资源。
  • 请求参数

  • 响应主要参数

    • access_token 访问令牌
    • refresh_token 更新令牌
    • scope 权限范围
{
  "access_token": "37_iSnKFdlhiPaUUS8fcttaUc4arw1x__YxgPlflHUstbkIeiDFU6sO8MrJQ0Rhj1TCOV_jk68gKPLoOvKZeEHpLRt-x5smDrjYEYMBrZhb0",
  "expires_in": 7200,
  "refresh_token": "37_na1tDQsOrphZX3ybr6OyBX5hv7s1m1bW6oc0ry2GsYIjlH0mZs9ZjYQC_1q-ZHkCL4tXbl3gS4DDPy2EKgX72aLrTJujN_KfGIeVVilwc",
  "openid": "oPG8J1m5cGDcpP1yE1I9v2mNGM",
  "scope": "snsapi_login",
  "unionid": "oBEh1523T_L6H_WBsV4pg-o8bmM"
}

1.2 简化模式

  • 不需要通过客户端后台服务器,直接在浏览器中向认证服务器申请令牌,跳过了授权码这个步骤
  • 对于简化模式获得的 access_token 有效期很短,一般是会话级的,即当会话结束时就失效

1.3 密码模式

  • 用户向第三方应用提供用户和密码,第三方应用使用这些信息向平台商换取token
    • 如 登录 网页端作为第三方应用,服务器是平台商。
  • 请求主要参数
    • grant_type=password
    • username=用户名
    • password=密码
    • 如:
header 中
Authorization: Basic c2hhcmUtY2xpZW50LXVzYzpzaGNsaWVudFNlY3JldA==
http://dev.weepal.info/share-gateway/usc/auth/form?grant_type=password&username=13&password=13&imageCode=8259

1.4 客户端模式

  • 第三方应用直接通过 appid,secret 向平台商获取令牌

  • 请求主要参数

    • grant_type=client_credentials
    • Authorization请求头=Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
  • 响应参数

    • 没有refresh_token 参数
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyIqIl0sImV4cCI6MTU1OTAxOTAxNywianRpIjoiZGMzZGZiYTEtMGVmNy00ZTg1LWI1OTgtZmRiZjYwNzJiMmVhIiwiY2xpZW50X2lkIjoic2hhcmUtY2xpZW50LXVzYyIsInRpbWVzdGFtcCI6MTU1OTAxMTgxNzc1NX0.FN_y50MD0XuO2O5ooOS24_-1_t9XXXrhxi1eR47xajE",
"token_type": "bearer",
"expires_in": 7199,
"scope": "*",
"timestamp": "1559011817755",
"jti": "dc3dfba1-0ef7-4e85-b598-fdbf6072b2ea"
}

2 授权过程

  • image.png

2.2 微信三方登录授权过程 (授权码模式)

  • 一般授权流程
  • 1 首先向微信申请 appid,secret 设置回调地址 http://dev.weepal.info/share/login
  • 2 用户访问第三方应用登录页面,点击微信登陆,第三方应用返回一个引导向微信的链接
https://open.weixin.qq.com/connect/qrconnect?client_id=wxde780db2538135&response_type=code&redirect_uri=http%3A%2F%2Fdev.weepal.info%2Fshare%2Flogin&state=72fc22bd-a5-4166-b87d-0f04d2329b40&appid=wxde7db253813d05&scope=snsapi_login
  • 3 如果用户授权了。重定向到第三方应用前端,前端带上授权码 访问 后端接口
http://dev.weepal.info/share-gateway/usc/shareSocial/auth/weixin?code=061O9S000uq3nK1qcA3007k0C62O9S0w&state=72fc22bd-18a5-4166-b87d-0f04d2329b40

  • 4 后台根据 根据授权码拿到微信访问令牌(access_token),根据令牌获取 微信用户信息接口。根据返回的用户信息的唯一标识。
    • 判断是否已经绑定过业务系统
      • 绑定过 后台执行登录逻辑 返回前端 登录成功信息。
      • 没绑定过, 给前端返回微信返回的用户信息
        • 前端跳转到绑定微信界面,绑定完。
          • 返回登陆成功信息
          • 或者返回绑定成功重新登陆。

相关文章

  • Spring Security Oauth2

    oauth2理解oauth2理解oauth2参考 oauth2流程 基本概念 Resource Owner: 资源...

  • 微服务安全

    OAuth2 白话OAuth2 什么是OAuth Spring Security OAuth2

  • Spring OAuth2(JDBC)

    一、Spring OAuth2 Spring OAuth2是OAuth2协议的完整实现,如果你对OAuth2协议不...

  • 05 oauth2

    平台商通过OAuth协议,提示用户对第三方软件厂商(ISV)进行授权,使得第三方软件厂商能够使用平台商的部分数据,...

  • OAuth2基本概念

    OAuth2 基础概念 标签(空格分隔): OAuth2 什么是OAuth2 ? OAuth2.0是OAuth协议...

  • oauth2设置token过期时间

    oauth2设置token过期时间,oauth2设置刷新token过期时间 oauth2设置token过期时间,在...

  • oauth2 介绍

    1、什么是oauth2 2、oauth2 架构图 3、oauth2 工作流程 4、优缺点

  • Oauth2授权码模式

    3.3 Oauth2授权码模式 3.3.1 Oauth2授权模式 Oauth2有以下授权模式: 授权码模式(Aut...

  • 27.OAuth2.0-Spring Cloud Securit

    Spring Cloud Security OAuth2 环境介绍 Spring Security OAuth2是...

  • Spring Cloud集成OAuth2

    Spring Cloud集成OAuth2 什么是OAuth2 OAuth2 是一个授权框架,或称授权标准,它可以使...

网友评论

      本文标题:05 oauth2

      本文链接:https://www.haomeiwen.com/subject/rsqruktx.html