2019独角兽企业重金招聘Python工程师标准>>>

1.什么是OAuth

OAuth官网介绍是这样的:

An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.

翻译过来就是:

允许Web,移动端和桌面应用程序在一个简单、标准的方法中进行安全授权的开放协议

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站(应用)上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 我们现在常说的OAuth协议一般指的是OAuth2.0,目前大多数互联网公司开放API接口都基本上都支持OAuth2.0。

2.常见使用场景

举个例子,我们常见的微信授权登录,当我们下载了一款App(假设是Keep,我正在用的一个健身App),但我们懒得去注册新的账号,而我们又要使用该App的功能,如果该App提供了支持微信登录的“懒人”功能,那么你可以直接点击微信授权登录。那这么做有什么利弊呢? 第一:很显然,对客户来说,省去了注册的时间,更加方便,而且在微信已授权列表中,可以随意取消对该App的授权。 第二:对App来说,可以依赖社交账号,迅速发展用户,且可以采集该用户的一些信息(个人认为,某音这方面采集分析的有点过分了)

3.OAuth登录原理

先了解下OAuth中出现的几个名词:

  • 1.Provider:服务提供商。
  • 2.Resource Owner:资源所有者。
  • 3.Third-Party Client:第三方应用。

上述例子中,keep就是第三方应用,而微信就是服务提供商,客户就是资源所有者 用一个简单的流程图来描述下OAuth的登录流程:

4.授权模式

OAuth协议中的授权模式包括:授权码模式(authorization code), 简化模式(implicit),密码模式(resoure owner password credentials),客户端模式(client credentials)。 简化模式和客户端模式用的相对来说比较少,现在比较流行的都是使用授权码模式,也是我们学习的重点。

4.1 授权码模式

使用授权码模式时,第三方应用会将用户导向认证服务器,用户同意授权的动作会在认证服务器上完成。授权完毕之后,认证服务器会将用户重新导向至第三方应用,并且携带授权码,第三方应用收到授权码之后,再使用授权码向认证服务器申请令牌,如果认证服务器确认该授权码无误后,则会向第三方应用分配一个令牌。第三方应用再使用该令牌访问用户在资源服务器中的资源。流程图如下:

5. 总结

该篇文章主要是介绍一些有关OAuth协议的基本知识和认证原理,其中重点要了解的是OAuth中的授权码模式,目前大多数主流应用安全认证都是使用该模式。因为该模式相对于其他模式来说,流程是最完善、最安全的。如您看到该文后,有更好的资料可以在文章下方评论分享。感谢您的观看!

转载于:https://my.oschina.net/liululee/blog/3009255

精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介相关推荐

  1. 精通Spring Boot——第十一篇:使用自定义配置

    2019独角兽企业重金招聘Python工程师标准>>> 今天这篇文章给大家介绍自定义配置的两种方式 第一式: 使用@ConfigurationProperties,且看代码 pack ...

  2. 《Spring》第二十一篇 事务底层源码解析

    目录 一.事务的底层执行原理 1. 解析注解@EnableTransactionManagement 2. Bean生命周期的初始化后阶段,校验是否需要进行AOP 3. 示例FruitsService ...

  3. 第七章、Spring Boot MyBatis升级篇

    课时二十七.Spring Boot MyBatis升级篇-注解 缘起:在一节视频中,有这么一段留言:"会不会推出SpringBoot整合Mybaits配置文件sqlMapConfig.xml ...

  4. spring Boot 2 基础篇 。内含 整合一个spring boot 的 小案例

    目录 springBoot2基础篇 前言与开发环境 一.快速创建Boot项目 1.使用spring提供的快速构建 2.基于maven的手动构建 3.在Idea中隐藏指定文件/文件夹 二.SpringB ...

  5. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  6. Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    Spring Boot--2分钟构建spring web mvc REST风格HelloWorld 之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介 ...

  7. Spring Boot (一)Spring Boot 概述

    Spring Boot(一) 一 . Spring Boot 是什么? 首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式.这是方法用来开发基于Sprin ...

  8. Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源

    Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spri ...

  9. spring boot测试_测试Spring Boot有条件的合理方式

    spring boot测试 如果您或多或少有经验的Spring Boot用户,那么很幸运,在某些时候您可能需要遇到必须有条件地注入特定bean或配置的情况 . 它的机制是很好理解的 ,但有时这样的测试 ...

最新文章

  1. 如何使用Nsight Compute?
  2. python xpath用法_Python--xpath的使用
  3. 路面平整度采集和计算方法
  4. PHP登录密码的生成与验证
  5. linux 修改ssh banner
  6. 安装oracle 12c 还用装11g_oracle12c-RAC安装部署之GRID安装
  7. Tuxedo学习门户网站
  8. Android插件化开发基础之Java类加载器与双亲委派模型
  9. matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halc
  10. 如何查看服务器当前的负载信息
  11. activeMQ发送与接受消息模板代码
  12. 开发之前需要哪些文档_为什么在开发之前总是应该做文档
  13. Spark SQL连接数据库找不到Mysql驱动解决方法
  14. html z-dext优先级顺序,$ext{1D/1D}$ 动态规划的三种优化
  15. myeclipse上SVN代码合并详细步骤图解
  16. POJ3263 Tallest Cow【差分数组】
  17. 2021-05-06
  18. 机器学习深度学习视频资料大汇总
  19. svn使用的代码审查工具_专家使用的五种代码审查技巧
  20. Mud Puddles ( bfs )

热门文章

  1. boost::johnson_all_pairs_shortest_paths用法的测试程序
  2. GDCM:VolumeSorter的测试程序
  3. boost::container模块实现显式实例集的测试程序
  4. Boost:使用类array <>的简单示例
  5. ITK:向二进制图像添加噪声
  6. ITK:创建一个图像区域
  7. ITK:创建一个点集
  8. DCMTK:基本工作清单管理服务类提供程序基于一组文件作为数据源
  9. VTK:几何对象之TextActor
  10. OpenCV处理引起光学错觉的图像