首页 > 其他分享 >OAuth2.0的简单认识

OAuth2.0的简单认识

时间:2024-06-19 14:25:17浏览次数:19  
标签:code 认识 access token 简单 授权 OAuth2.0 XXXXX

内容:结合实际平台应用,以开发者视角简单描述OAuth2.0

OAuth2.0其实是一种授权机制,而且在日常的互联网环境中是非常常见的,比如一些网站或者应用,在我们选择登录时,常常会有第三方登录选项,其实这就是OAuth2.0的一种实现。

官方协议流程

这里直接引用官网文档流程

授权码模式

其实OAuth2.0有四种模式,但授权码模式(authorization code)是功能最完整、流程最严密的授权模式,所以笔者只对该模式进行展开,其他模式类比即可 单纯懒

授权码模式官方的流程如下图

对于流程细节和其他三种模式感兴趣的可以直接去理解OAuth 2.0 - 阮一峰的网络日志

实例

这里我们直接以京东平台为例,看一下以开发者视角如何对接平台的OAuth2.0授权 这里夸一下京东的文档

1)获取code

获取code,其实就对应上面流程图中红色框选的步骤,这一步的主要目的是告诉授权服务器,该用户已经同意用京东账号登录其他的应用了。

那么京东平台对于这一操作的实现方式是:让开发者拼接授权url,即

https://open-oauth.jd.com/oauth2/to_login?app_key=XXXXX&response_type=code&redirect_uri=XXXXX&state=20180416&scope=snsapi_base

其中,redirect_url为请求回调地址,当用户完成授权后,京东通过该地址请求回调返回code,即流程图中绿色框选的部分。

2)获取access_token

通过上一步我们已经获取到了code,接下来就是用以此换取access_token,即流程图中黄色框选部分。

京东平台是通过拼接获取url的方式来换取code的,即

https://open-oauth.jd.com/oauth2/access_token?app_key=XXXXX&app_secret=XXXXX&grant_type=authorization_code&code=XXXXX

通过请求该地址,即可获取access_token,即蓝色框选部分。

3)刷新access_token

第二步获取access_token时,refresh_token也会同时返回。

因为一般情况下,令牌是短期的,到期会自动失效,所以就需要有refresh_token参数来刷新令牌。

京东平台依旧是通过拼接url的方式来刷新access_token,即

https://open-oauth.jd.com/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXXX

通过请求该地址,即可刷新access_token,同时获取到新的refresh_token

总结

OAuth2.0其实简而言之,就是让通过用户本人授权,让一个拥有足够信用的应用使用该用户的一些信息。

虽然,通过用户直接输入密码也可以达到同样的效果,但使用这一模式有几个很大的优势

(1)令牌为短期有效

(2)令牌可以设置权限范围通过传递不同的参数获取不同的权限范围,上文并没有细说

(3)令牌相比于密码更加可控,即数据所有者可立即撤销令牌

标签:code,认识,access,token,简单,授权,OAuth2.0,XXXXX
From: https://www.cnblogs.com/lenux/p/18256141

相关文章

  • 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人
    ......
  • 【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验一 Packet Tracer的简单
    一、实验目的1.掌握PacketTracer的简单使用方式;2.加深对网络体系结构的理解。二、实验要求1.搭建CiscoPacketTracer仿真平台使用环境;2.观看B站湖科大教书匠仿真实验视频,完成对应实验。三、实验内容第一部分:PacketTracer的简单使用1.下载CiscoPacketTracer并......
  • Libgdx游戏开发(5)——碰撞反弹的简单实践
    原文:Libgdx游戏开发(5)——碰撞反弹的简单实践-Stars-One的杂货小窝本篇简单以一个小球运动,一步步实现碰撞反弹的效果本文代码示例以kotlin为主,且需要有一定的Libgdx入门基础注:下面动态图片看着有些卡顿,是录制的问题,实际上运行时很流畅的水平滚动简单起见,我们通......
  • GBASE8s数据库关于锁的认识和检查监控
    1.锁的概念1.1.gbase8s的常规锁gbase8s数据库的锁分为两种:共享锁和排他锁共享锁:顾名思义,共享锁就是可以同时由多个用户同时获取到的锁资源一个数据(行、页、表)被加上共享锁,则同时也可以被其他用户或者session添加共享锁,但是数据加上共享锁后,不能被更新锁的添加不是单独添......
  • ​b站视频演示效果:【web前端特效源码】使用HTML5+CSS3+JavaScript十分钟快速制作一个
    b站视频演示效果:【网页设计期末大作业源代码】使用HTML5+CSS3+JavaScript十分钟快速制作一个简约大气卡通动漫静态网站|自制超简单的卡通类网页,响应式自适应新手友效果图:完整代码:<!DOCTYPEhtml><html><head><title>Home</title><metaname="viewpor......
  • 基于IDEA的Maven简单工程创建及结构分析
    目录一、用mvn命令创建项目二、用IDEA的方式来创建Maven项目。(1)首先在IDEA下的Maven配置要已经确保完成。(2)第二步去new一个project(创建一个新工程)(3)创建成功(一个简单的Maven项目)三、项目结构(1)分析一下刚刚我们创建的一个基础的Maven项目。(或叫"脚手架......
  • 【x264】滤波模块的简单分析
    【x264】滤波模块的简单分析1.滤波模块概述1.1自适应边界1.2自适应样点级滤波器1.3滤波过程2.函数入口(fdec_filter_row)2.1去块滤波(x264_frame_deblock_row)2.1.1强滤波函数(deblock_edge_intra)2.1.2普通滤波函数(deblock_edge)3.小结参数分析:【x264】x264编码......
  • 认识Redis
    认识RedisRedis是目前最受欢迎的NoSQL数据库之一;db-engines排名上,所有数据库类型排名第六,键值对数据库排名第一。Redis是用C语言编写的开源、支持多种数据结构、支持网络、基于内存、可选持久性的键值对内存型数据库,具备以下特征:基于内存运行、效率高单线程运行支持分布式......
  • forest简单使用
    相对比restTemplate,forest形式和feign类似,接口调用清晰明了<dependency><groupId>com.dtflys.forest</groupId><artifactId>forest-spring-boot-starter</artifactId><version>1.5.36</version></dependency>......
  • 定时器的认识
    目录定时器定时器怎么定时定时器编程定时器控制led一秒亮灭定时器知识点补充定时器简介:C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同......