精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介
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 登录简介相关推荐
- 精通Spring Boot——第十一篇:使用自定义配置
2019独角兽企业重金招聘Python工程师标准>>> 今天这篇文章给大家介绍自定义配置的两种方式 第一式: 使用@ConfigurationProperties,且看代码 pack ...
- 《Spring》第二十一篇 事务底层源码解析
目录 一.事务的底层执行原理 1. 解析注解@EnableTransactionManagement 2. Bean生命周期的初始化后阶段,校验是否需要进行AOP 3. 示例FruitsService ...
- 第七章、Spring Boot MyBatis升级篇
课时二十七.Spring Boot MyBatis升级篇-注解 缘起:在一节视频中,有这么一段留言:"会不会推出SpringBoot整合Mybaits配置文件sqlMapConfig.xml ...
- spring Boot 2 基础篇 。内含 整合一个spring boot 的 小案例
目录 springBoot2基础篇 前言与开发环境 一.快速创建Boot项目 1.使用spring提供的快速构建 2.基于maven的手动构建 3.在Idea中隐藏指定文件/文件夹 二.SpringB ...
- 54. spring boot日志升级篇—logback【从零开始学Spring Boot】
在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
Spring Boot--2分钟构建spring web mvc REST风格HelloWorld 之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介 ...
- Spring Boot (一)Spring Boot 概述
Spring Boot(一) 一 . Spring Boot 是什么? 首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式.这是方法用来开发基于Sprin ...
- Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spri ...
- spring boot测试_测试Spring Boot有条件的合理方式
spring boot测试 如果您或多或少有经验的Spring Boot用户,那么很幸运,在某些时候您可能需要遇到必须有条件地注入特定bean或配置的情况 . 它的机制是很好理解的 ,但有时这样的测试 ...
最新文章
- 如何使用Nsight Compute?
- python xpath用法_Python--xpath的使用
- 路面平整度采集和计算方法
- PHP登录密码的生成与验证
- linux 修改ssh banner
- 安装oracle 12c 还用装11g_oracle12c-RAC安装部署之GRID安装
- Tuxedo学习门户网站
- Android插件化开发基础之Java类加载器与双亲委派模型
- matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halc
- 如何查看服务器当前的负载信息
- activeMQ发送与接受消息模板代码
- 开发之前需要哪些文档_为什么在开发之前总是应该做文档
- Spark SQL连接数据库找不到Mysql驱动解决方法
- html z-dext优先级顺序,$ext{1D/1D}$ 动态规划的三种优化
- myeclipse上SVN代码合并详细步骤图解
- POJ3263 Tallest Cow【差分数组】
- 2021-05-06
- 机器学习深度学习视频资料大汇总
- svn使用的代码审查工具_专家使用的五种代码审查技巧
- Mud Puddles ( bfs )
热门文章
- boost::johnson_all_pairs_shortest_paths用法的测试程序
- GDCM:VolumeSorter的测试程序
- boost::container模块实现显式实例集的测试程序
- Boost:使用类array <>的简单示例
- ITK:向二进制图像添加噪声
- ITK:创建一个图像区域
- ITK:创建一个点集
- DCMTK:基本工作清单管理服务类提供程序基于一组文件作为数据源
- VTK:几何对象之TextActor
- OpenCV处理引起光学错觉的图像