一. 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协议的认识的更多相关文章

  1. 集成基于OAuth协议的单点登陆

    在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯.但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的.例 ...

  2. oauth协议

    微博 : 新浪 腾讯 OAuth 新浪微博   APP开发 步骤:1.注册新浪开发者账号 获取以下信息 client_id  123456  标示应用身份的  唯一的  有的也叫App Key sec ...

  3. OAUTH 协议介绍

    OAUTH 产生背景 随着互联网的深入发展,一些互联网巨头积累了海量的用户和数据.对于平台级软件厂商来说,用户的需求多种多样,变化万千 以一己之力予以充分满足,难免疲于本命.因此将数据以接口的形式开放 ...

  4. oAuth协议学习

    我们的项目需要为一个认证网站开发一套API,这些API可以提供给很多公司来调用,但是公司在调用之前,必须先做授权认证,由此接触到了oAuth协议. 以下内容来自网络整理 定义 OAUTH协议为用户资源 ...

  5. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  6. Spring Security构建Rest服务-1000-使用SpringSocial开发第三方登录之大白话OAuth协议

    OAuth协议简介 OAuth协议要解决的问题    OAuth协议中的各种角色 OAuth协议运行流程 OAuth协议,在网上也看了一些资料,意思就是给你颁发一个临时的通行证,你拿着这个通行证可以访 ...

  7. [典型漏洞分享]结合YS业务分析使用oauth协议的风险

    结合YS业务分析oauth协议风险 问题描述: YS 使用QQ互联的openAPI实现QQ登录YS的功能,使用该功能需要在腾讯注册登录时的回调地址,根据oauth协议,用户的code或者access_ ...

  8. OAUTH协议介绍

    OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可 ...

  9. 认证授权:学习OAuth协议

    1.什么是OAuth协议? OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OA ...

随机推荐

  1. Laravel框架下容器Container 的依赖注入和反射应用

    依赖注入,简单说是把类里头依赖的对象,置于类外头,即客户端调用处.相当于把类与类解耦. 一个简单的例子: class A { public function __construct() { // 这种 ...

  2. TestNG安装及使用

    安装:https://www.cnblogs.com/xusweeter/p/6559196.html使用:https://www.cnblogs.com/liwu/p/5113936.html 作用 ...

  3. .NET Core 实现 Redis 批量查询指定格式的Key

    一. 问题场景 Redis 作为当前最流行的内存型 NoSQL 数据库,被许多公司所使用,作为分布式缓存.我们在实际使用中一般都会为 key 带上指定的前缀或者其他定义的格式.当由于我们程序出现bug ...

  4. 获取任意链接文章正文 API 功能简介

    此文章对开放数据接口 API 之「获取任意链接文章正文」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 1. 产品功能 接口开放了根据提供的文章链接 Url 参数,智 ...

  5. D3.js 入门学习(一)

    一.安装D3.js 1.网络连接 <script src="https://d3js.org/d3.v4.min.js"></script> 2.命令行安装 ...

  6. python之路7-正则表达式

    正则表达式用于做字符串匹配,在python中用re模块来操作 生成正则的在线工具:http://tool.chinaz.com/regex

  7. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  8. mpvue——修改第三方组件样式

    前言 我们都知道在vue中可以定义多个<style>,一般为了防止全局污染,我们会使用<style scoped>代表这里面的css样式只在本页面生效. 全局 这个当时测试是直 ...

  9. 安装 R 包报错 clang: error: unsupported option '-fopenmp' 的解决方法

    MacOS 上安装 R 包 install.packages("data.table") 后面提示是否安装需要编译的版本: Do you want to install from ...

  10. Input标签使用整理

    0 写在前面 对于程序而言I/O是一个程序的重要组成部分.程序的输入.输出接口,指定了程序与用户之间的交互方式.对于前端开发而言,input标签也有着其重要地位,它为用户向服务端提交数据提供了可能. ...