对OAuth协议的认识
一. OAuth是什么
OAuth 是Open Authorization的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。
通俗地说,就是当我们想把自己系统的某些功能暴露给第三方系统进行调用,并且需要对第三方系统的调用设置一定的访问权限。
这样一来这两个系统的开发人员之间就得做系统的对接,
但如果本方系统按照OAUTH协议的标准进行了相应的实现,那么这个对接的过程就不需要双方进行额外沟通。调用方只要按照标准的实现进行对接就可以了。
OAuth协义有两个版本1.0 和 2.0 ,2.0 相对比较简洁是目前比较流行的做法。OAuth具体的实现细节大致如下:
1. 由本方系统向第三方系统提供公钥和clientId
2. 第三方系统的某次访问以http形式携带公钥和clientId访问本方系统的OAuth授权中心
3.授权中心将对合法的请求返回一个授权code
4.第三方再携带code再次访问授权中心用code去换取令牌,这个过程应走https的加密通道
5. 获得令牌后,就可以携带令牌访问本方系统开放给第三方系统的API服务了
二. OAuth和SSO单点登录的区别
OAuth2解决的是服务提供方(微信等)给第三方应用授权的问题,而sso解决的是大型系统中各个子系统如何共享登陆状态的问题。
两者都是基于分布式系统,涉及到多个角色,但是不同的是,OAuth2是一种具体的协议,sso可以说是一种技术,可以用cookie实现,
甚至也可以用OAuth2实现(虽然不是很好),比如OAuth中的服务提供方可以充当sso认证中心,OAuth中的第三方应用也可以是sso中的子系统。
三.在微服务中何时可以考虑使用OAuth认证
除非要把自己系统的功能暴露给第三方访问(即暴露自己的注册中心),且不需要双方进行额外沟通,本方才需要实现OAuth2授权
四.实现微信帐号登录自己系统的原理
此时微信一方应实现OAuth2授权,我们的系统通过调用微信的授权获得令牌,然后用令牌去访问微信的相关接口(例如获取用户名等等)来实现微信用户在本方系统的登录和访问。
五. OAuth应用的场景
1. 有的系统希望第三方系统的用户也可以访问他的系统,以提升访问流量。
例如:我们开发的一套系统,希望微信或者QQ的用户能够无需注册就能登录访问我们的系统,这需要借助微信或者QQ提供的OAuth的API完成授权验证,然后访问微信或者QQ的公开的API获到用户信息,然后就可以让微信或者QQ的用户访问我们的系统。因为通过微信或者QQ的OAuth接口的验证,我们是可以信任这些用户的,并且也获取到了这些用户的信息。
2. 不同的系统之间的功能协作
例如:一个用户同时是两个系统(系统A和系统B)的用户,现在A系统有一个功能,希望是调用B系统某个功能来协助完成的。比如有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。
参考资料:
https://www.cnblogs.com/AloneSword/p/4167573.html
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
对OAuth协议的认识的更多相关文章
- 集成基于OAuth协议的单点登陆
在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯.但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的.例 ...
- oauth协议
微博 : 新浪 腾讯 OAuth 新浪微博 APP开发 步骤:1.注册新浪开发者账号 获取以下信息 client_id 123456 标示应用身份的 唯一的 有的也叫App Key sec ...
- OAUTH 协议介绍
OAUTH 产生背景 随着互联网的深入发展,一些互联网巨头积累了海量的用户和数据.对于平台级软件厂商来说,用户的需求多种多样,变化万千 以一己之力予以充分满足,难免疲于本命.因此将数据以接口的形式开放 ...
- oAuth协议学习
我们的项目需要为一个认证网站开发一套API,这些API可以提供给很多公司来调用,但是公司在调用之前,必须先做授权认证,由此接触到了oAuth协议. 以下内容来自网络整理 定义 OAUTH协议为用户资源 ...
- OAUTH协议简介
OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...
- Spring Security构建Rest服务-1000-使用SpringSocial开发第三方登录之大白话OAuth协议
OAuth协议简介 OAuth协议要解决的问题 OAuth协议中的各种角色 OAuth协议运行流程 OAuth协议,在网上也看了一些资料,意思就是给你颁发一个临时的通行证,你拿着这个通行证可以访 ...
- [典型漏洞分享]结合YS业务分析使用oauth协议的风险
结合YS业务分析oauth协议风险 问题描述: YS 使用QQ互联的openAPI实现QQ登录YS的功能,使用该功能需要在腾讯注册登录时的回调地址,根据oauth协议,用户的code或者access_ ...
- OAUTH协议介绍
OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可 ...
- 认证授权:学习OAuth协议
1.什么是OAuth协议? OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OA ...
随机推荐
- 前端——JavaScript
何谓JavaScript?它与Java有什么关系? JavaScript与HTML.CSS组合使用应用于前端开发,JavaScript是一门独立的语言,浏览器内置了JS的解释器.它除了和Java名字长 ...
- Ubuntu 14.04 结束支持该如何应对?
Ubuntu 14.04 即将于 2019 年 4 月 30 日结束支持.这意味着在此日期之后 Ubuntu 14.04 用户将无法获得安全和维护更新. 你甚至不会获得已安装应用的更新,并且不手动修改 ...
- day01(计算机组成,进制,内存分布,操作系统)
本周内容: 第一天: 计算机原理 操作系统 第二天: 编程语言 python入门:环境 - 编辑器 变量 基本数据类型 学习方法: 鸡汤 - 干货 wwwh : what | why | where ...
- 08-JavaScript中的函数
JavaScript中的函数 1.函数简介 函数:就是将一些语句进行封装,然后通过调用的形式,执行这些语句. 函数的作用: 将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重 ...
- mysql int(19) float(7,2) decimal(7,2)对比
nt(19):指定数字的显示宽度为19,与实际存储数值的范围无关 float(7,2): 7是显示宽度指示器,指定显示的浮点数为7位数字(与float实际存储值的范围无关),2代表小数点后只有两位小 ...
- k8s简单的来部署一下tomcat,并测试自愈功能
前言: 2018年12月6日 今天终于把k8s运行tomcat打通了,耗了我几天时间一个一个坑踩过来,不容易啊,废话不多说. 先记录一些操作时的错误: <<<<<< ...
- Shell命令-文件及内容处理之cat、tac
文件及内容处理 - cat.tac 1. cat:显示文件内容 cat命令的功能说明 cat命令用于连接多个文件并且打印到屏幕输出或重定向到指定文件中 cat命令的语法格式 cat [OPTION]. ...
- unity游戏热更新
链接:https://pan.baidu.com/s/1ggWP0OF 第 1 章 : 热更新技术学习介绍 课时1:101-热更新技术学习介绍 11:55 什么是热更新? 举例来说 游戏上线后,玩家下 ...
- GitHub最基本使用总结
GitHub最基本使用入门 入门必看博客:https://mp.weixin.qq.com/s/LbzSwl4dYwrSPze0w10l8w 一.Git Linux安装 Git Linux安装教程:h ...
- golang 代码笔记
锁 互斥锁,g0获取锁,到释放锁之间,g1去获取锁失败,阻塞,g0释放锁之后g1获取锁成功,gn阻塞. package main import ( "fmt" "sync ...