初探OAuth2.0第三方认证登录
什么是OAuth2.0?
- 假设我有一件非常重要的文件存储与于瑞士银行的私有保险柜中,如果我需要委托某个人将他提取出来,除了将密码告诉他之外别无他法,
但是OAuth的目的却是定义一种协议帮助资源的拥有者在不提供自身凭证的前提下授权第三方应用以他的名义存取受保护的资源。OAuth的全称为“Open Authorization”,所以它是一个开放的协议,目前最新的版本为2.0。 - OAuth2.0对OAuth1.0是完全不兼容的。目前支持OAuth的网站有t.sina.com.cn,t.qq.com,t.sohu.com,t.163.com,www.douban.com,www.twitter.com,www.facebook.com
- 开心网open文档:http://wiki.open.kaixin001.com/index.php?id=OAuth2.0%E6%96%87%E6%A1%A3
OAuth2.0涉及角色
- 资源拥有者(RO:Resource Owner):资源的拥有者也是授权者,如果它是一个“人”,一般就是指最终用户。由于“资源”在这个场景中表示为用户的电子邮箱地址,所以资源拥有者自然就是指最终用户。
- 客户端应用(Client):需要取得资源拥有者授权并最终访问受保护资源的应用,对于我们的场景来说,就是我们创建的App。
- 资源服务器(Resource Server):最终承载资源的服务器,它一般体现为一个可被调用的Web API。对于我们提供的场景来说,客户端通过调用新浪微博得Web API获得用户的电子邮箱地址,所以新浪微博就是资源服务器。
- 授权服务器(Authorization Server):它对用户(一般情况下为资源拥有者)和客户端应用实施认证,并在用户授权的情况下向客户端应用颁发Access Token。在我们提供的场景中,资源服务器和认证服务器合二为一,均为新浪微博。
实现方案
这里面的access_token可以考虑放在缓存中而不是放在数据库中,一旦过期时间到就可以作废了
oauth2.0有许多种流程,分别适应不同的第三方应用,并且这些流程数目还在不断增加和完善中,一个网站可以实现一种或多种流程
1. Web Server Flow(适合有server的第三方使用的):web Server Flow是把oauth1.0的三个步骤缩略为两个步骤
- 客户端http请求authorize
- 服务端接收到authorize请求,返回用户登陆框页面
- 用户在客户端登陆
- 服务器端将浏览器定位到callbackurl,并同时传递Authorization Code
- 客户端使用https发送access_token
- 服务器端收到access_token请求,验证Authorization Code—生成access_token, refresh_token,和过期时间–access_token和refresh_token和过期时间入库
- 返回access_token和refresh_token,过期时间
- 用户使用HTTPS+ access_token请求开放平台接口
2.User-Agent(适合所有无server端配合的客户端):
- 客户端http请求authorize
- 服务端接收到authorize请求,返回用户登陆框页面
- 用户在客户端登陆
- 服务器端将浏览器定位到callbackurl,并同时传递access_token和过期时间
初探OAuth2.0第三方认证登录相关推荐
- Oauth2.0的认证登录
Oauth2.0的认证登录介绍 Oauth 2 中的登录地址localhost:8998/oauth/token?grant_type=password&client_id=system&am ...
- Oauth2.0 github认证登录实现
认证 创建一个授权github app网址 前言 1. 右上角点击设置 2.点击开发者设置 3. 点击 OAuth Apps 4. 创建一个 新的 OAuth App,如果没有注册会跳转到注册页面 注 ...
- [OAuth2.0三方登录系列文章-1]OAuth2.0与三方登录的端到端方案
系列文章 [OAuth2.0三方登录系列文章-1]OAuth2.0与三方登录的端到端方案 [OAuth2.0三方登录系列文章-2]如何设计基于OAuth2.0的授权登录SDK以及竞品分析 [OAuth ...
- 以微博为例进行Oauth2进行第三方授权登录
OAuth2.0:对于用户相关的 OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权. 流程: (A)用 ...
- Django对接第三方认证登录平台(QQ登录)
QQ登录开发文档 QQ互联开发者申请步骤 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现. 相关链接: http://wiki.connect.qq.com/%E6%88%90%E4%B ...
- 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)
---------------------------------------------------------------------------------------------- [版权申明 ...
- Oauth2.0 授权认证
Oauth2.0 授权认证 目录 1. OAuth协议是什么?. 1 2. 应用场景... 1 3. 名词定义... 2 4. 主要流程... 2 5. 四种授权模式... 3 6. 授权码授权方式. ...
- Oauth2.0实现单点登录的原理流程,这次总该懂了!
单点登录是多域名企业站点流行的登录方式.本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程.同时总结了权限控制的实现方案,及其在微服务架构中的应用. 1 什么是单点登录 ...
- Oauth2.0实现单点登录的原理流程
Oauth2.0实现单点登录的原理流程 1.什么是单点登录 2.OAuth2 认证授权的原理流程 3.基于 SpringBoot 实现认证/授权 4.综合运用 1.什么是单点登录 1.1 多点登录 传 ...
- Oauth2.0实现单点登录的原理流程,通俗易懂
单点登录是多域名企业站点流行的登录方式.本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程.同时总结了权限控制的实现方案,及其在微服务架构中的应用. 1 什么是单点登录 ...
最新文章
- json.dumps()函数解析
- how-to-get-a-job-in-deep-learning
- 让delphi程序不受WINDOWS日期格式的影响
- 我的世界连锁挖矿下载JAVA_我的世界1.7.10连锁挖矿整合包
- catboost进行分类并开启GPU模式
- 判断不为空和不为空串的方法java
- AIsing Programming Contest 2020 总结
- 动态规划训练17 [Super Jumping! Jumping! Jumping! HDU - 1087 ]
- JDBC 提示:WARN: Establishing SSL connection without server's identity verification is not recommended.
- unzip 解压_每天一条Linux命令(11) unzip (超详细)
- java 读取txt文件指定行_在Java中读取txt文件中的特定行
- 分时系统是计算机网络嘛,简述计算机网络与分时多用户系统多机系统分布式系统的区别...
- 【u107】数字游戏(bds)
- elementUI中登录页form表单重复跳转登陆页
- 苹果版App开发心得
- Windows下安装python的scipy等科学计算包(转)
- 远程协同TeamViewer
- 一键清除windows远程桌面访问痕迹bat脚本
- openssl漏洞补丁修复
- 第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)