看了阮一峰的OAuth2.0 的文章,主要偏理论 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
和闪客sun 的,整体流程比较详细 https://www.cnblogs.com/flashsun/p/7424071.html#!comments.
和微信扫码登录OAuth2.0
https://cloud.tencent.com/developer/article/1447723

本人亲自拿gitee登录用微信来登录实验了下:

1.gitee界面找到微信按钮

2.点击微信按钮


浏览器发送Get请求:webchat
返回302 URL重定向。
(重定向的流程浏览器首先访问服务器A的URL,服务器A返回带着location为B的URL的 header 和3XX的状态码,浏览器读取响应的3XX状态码,获取到头部的 location,然后跳转到服务器B的URL。需要知道的,跳转是浏览器发起的。)


URL重定向到https://open.weixin.qq.com/connect/qrconnect?appid=wx63d402790645b7e6&redirect_uri=https%3A%2F%2Fgitee.com%2Fauth%2Fwechat%2Fcallback&response_type=code&scope=snsapi_login&state=493b424b8d3e54839c606a13862010c200917df6d41a5fe3
返回 200 ok。

参数说明

参数 是否必须 说明
appid 应用唯一标识
redirect_uri 请使用urlEncode对链接进行处理(与后台配置一致,否则会报redirect_uri参数错误。)
response_type 填code
scope 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
state 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数。

3.扫描微信登录成功

扫描微信登录界面成功以后,微信登录界面的JS代码拉起如下Get请求,JS代码如下:
浏览器发送Get请求: https://gitee.com/auth/wechat/callback?code=031Z9gll2xPIx746tlll2NT4VE0Z9gle&state=493b424b8d3e54839c606a13862010c200917df6d41a5fe3
返回200 ok。

Get请求是

上面是按照步骤来实验,现在画个图来理解下。

至于很多人有个疑问:为什么要多个code 而不是直接返回token?
安全性:

1.返回code可能会被攻击者挟持。2.code只能使用一次。换取token需要code,appid,app_secret三个参数。3.必须确定gitee是在微信授权服务器这边注册过的(一般注册过会发放,appid,app_secret)

微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

基于OAuth2.0微信网页第三方授权原理相关推荐

  1. 微信网页第三方登录原理 微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众

    微信网页第三方登录原理 微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平 ...

  2. 基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权

    为了让大家不用重复造轮子,我写了一个TP控制器,继承控制器就可以直接用微信网页授权功能,但对于不是使用TP的小伙伴,可以直接在./Application/Home/Common/function.ph ...

  3. 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站

    首先得有一个注册的appkey和App Secret 该流程分三个步骤:  第一步:通过用户授权获取授权码Code:  第二步:用上一步获取的Code和应用密钥(AppSecret)通过Https P ...

  4. OAuth2.0 微信授权机制

    我在了解设计Restful接口的时候,发现涉及到接口验证,可以利用OAuth2.0机制来验证. 我开发的微信端Web网页通过微信授权的时候,微信端也是用OAuth2.0机制来获取用户基本信息. OAu ...

  5. php微信企业号oauth2.0,微信企业号:OAuth2.0微信授权验证

    微信企业号:OAuth2.0微信授权验证 企业应用中的 URL 链接(包括自定义菜单或者消息中的链接),可以通过 OAuth2.0 验证接口来获取成员的身份信息.使用步骤和方法如下: 1.先开发要使用 ...

  6. 基于oAuth2.0开发属于自己的SSO授权服务 - 授权码(Authourization Code)模式 (持续更新中。。。)

    此文章篇幅较长,平日上班较少时间写作,请见谅.持续更新中... oAuth2.0系列文章目录 #mermaid-svg-AZMPq56OmFj1I7k0 {font-family:"treb ...

  7. 互联网API开放平台安全设计-基于OAuth2.0协议方式

    基于OAuth2.0协议方式 什么是OAuth OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站 ...

  8. Oauth2.0实现单点登录的原理流程,这次总该懂了!

    单点登录是多域名企业站点流行的登录方式.本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程.同时总结了权限控制的实现方案,及其在微服务架构中的应用. 1 什么是单点登录 ...

  9. Oauth2.0实现单点登录的原理流程

    Oauth2.0实现单点登录的原理流程 1.什么是单点登录 2.OAuth2 认证授权的原理流程 3.基于 SpringBoot 实现认证/授权 4.综合运用 1.什么是单点登录 1.1 多点登录 传 ...

最新文章

  1. 常用的stsadm命令行参数
  2. php组件化开发composer,PHP组件化开发 - JimmyJaw的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
  4. BZOJ4196: [Noi2015]软件包管理器 (好题
  5. controller需要捕获异常吗_Spring之Controller异常处理
  6. python各种读取图像方法
  7. 活跃用户数怎么计算_【数据运营】|如何做好活跃用户的运营?
  8. 联机手写汉字识别,基于新型RNN网络结构的方法
  9. java web简单线上游戏_有什么在线的编程游戏?
  10. ubuntu 搜狗输入法的安装
  11. springboot接口返回封装与异常控制
  12. 重磅推荐:2017 年最流行的 15 个数据科学 Python 库
  13. mssql 查询无记录时sum_SQL常见面试题查询
  14. 360se html怎么删除,360安全浏览器服务组件能删除吗 如何删除
  15. 手持式矢量网络分析仪
  16. python excel 空值,python 删除空值且合并excel的操作
  17. 小学生如何用计算机写字,小学生练字笔顺电脑文章大全短文
  18. 用html代码在word中插入分页符,Word分页符怎么用?Word插入分页符的方法
  19. 电厂数字化进阶之路(三):时代的召唤
  20. 代理ARP的作用和原理

热门文章

  1. 乌班图安装出现无法获取锁解决
  2. 你的金钱和时间流向哪,你的人生就什么样!
  3. CCF 会议检索(近期可投)
  4. urllib库学习 - 京东商城手机图片爬虫
  5. windows10 打开所有文件夹弹出cmd.exe
  6. Verilog专题(十九)新世界的大门——状态机
  7. 单片机汇编跳转指令延时一秒
  8. c#程序连接orace出现驱动程序和应用程序之间的体系结构不匹配
  9. HTML中如何使用阿里图标库?
  10. 【论文推荐】了解《点云补全》必看的6篇论文(附打包下载地址)