结合微信公众号授权理解OAuth2.0
来源:互联网 发布:jsp java代码 编辑:程序博客网 时间:2024/04/28 17:26
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
因为公司的SSO是基于OAuth2.0协议进行开发的,所以学习了阮一峰理解OAuth2.0 这篇文章,讲的非常详细,其中的授权流程让我想起以前曾经做过的公众号开发授权流程,现在结合公众号授权流程理解OAuth2.0协议
一、应用场景
我曾经开发的一个网站,用来读取用户的微信个人信息。
问题是只有得到用户的授权,我们才能通过微信来读取用户的个人信息。那么,怎样获得用户的授权呢?
能想到的问题:
1、用户不可能在我们的网站中输入密码等关键信息
2、微信有对外提供部分信息授予接口
查询微信公众号开发文档,它的授权过程就是遵循OAuth2.0协议的。
二、名词定义
(1)第三方应用程序,指的是本人开发的网站,这里称为myapp。
(2)HTTP service:服务提供商,指的是微信。
(3)Resource Owner:资源所有者,本文中又称”用户”。
(4)User Agent:用户代理,本文中就是指浏览器。
(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。
知道了上面这些名词,就不难理解,OAuth的作用就是让”客户端”安全可控地获取”用户”的授权,与”服务商提供商”进行互动。
三、OAuth的思路
OAuth在myapp与微信之间,设置了一个授权层(authorization layer)。myapp不能直接登录微信,只能登录授权层,以此将用户与myapp分开来。myapp登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
myapp登录授权层以后,微信可以根据令牌的权限范围和有效期,向myapp开放用户储存的资料。
四、授权模式
1、授权码模式(authorization code)
常用,微信也是使用授权码模式,第五点详细分析
2、简化模式(implicit)
与授权码模式大致相同,只是少了一个步骤,详看阮一峰理解OAuth2.0
3、密码模式(resource owner password credentials)
不谈,指的是向用户索取密码
五、授权码模式
步骤:
(A)用户访问客户端,后者将前者导向认证服务器。(B)用户选择是否给予客户端授权。(C)假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。
图解:
例子:
公众号api
- 结合微信公众号授权理解OAuth2.0
- 微信公众平台OAuth2.0授权
- 微信公众号——OAuth2.0网页授权
- 微信公众号oAuth2.0授权问题总结
- 微信公众号开发之OAuth2.0网页授权
- 微信公众平台OAuth2.0网页授权
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发OAuth2.0网页授权
- 微信公众平台开发--OAuth2.0网页授权
- 微信公众平台开发:OAuth2.0网页授权
- 微信公众平台开发--OAuth2.0网页授权
- 微信公众平台OAuth2.0网页授权php示例
- 微信公众平台OAuth2.0网页授权php示例
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发 OAuth2.0网页授权
- 微信公众平台OAuth2.0网页授权php示例
- android:visibility和android:scaleType 属性
- Oracle11G-SQL开发指南-9-用户权限角色
- Cannot load php5apache2_4.dll into server
- AJAX
- java线程相关问题1
- 结合微信公众号授权理解OAuth2.0
- Java学习之泛型E、T、K、V等的含义
- Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数)
- 开发小坑--百度地图Marker和bootsharp样式冲突导致显示错乱
- [乐意黎转载]php mysql 搜索数据库 随机输出记录行
- 讯飞实训之字符串
- Oracle11G-SQL开发指南-10-创建表、序列、索引和视图
- tomcat无法打开jsp文件
- 配置apache的坑