Access Token 机制详解

2023-11-01

我们在访问很多大公司的开放 api 的时候,都会发现这些 api 要求传递一个 access token 参数。这个参数是什么呢?需要去哪里获取这个 access token 呢?

  access token 是在 Oauth2.0 协议中,客户端访问资源服务器时需要带上的令牌(其实就是一段全局唯一的随机字符串)。拥有这个令牌代表着得到用户的授权。令牌里面包含哪些信息呢?答案是:

 

  哪个用户  在什么时候  授权给哪个app  去做什么事情

 

  当然这些信息是不能直接从 access token 看出来的,而是存在平台方的数据库中,平台可以用 access token 作为 key 去查询出这些信息,然后验证调用方是否有权限。 

  对于 Oauth2.0 不了解的读者,请看这篇文章:简单介绍 Oauth2.0 原理

 

  所以,在调用这些 api 之前,需要先获取到 access token。获取的方法分为三步:

  

  第一步,实现一个 api:

    GET /recieve_code?code=

  这个 api 接收一个 code 参数。至于接收到 code 之后做什么,在第三步介绍。在这一步,只需提供这个 api 的 url,并且可以在公网访问,里面逻辑可以先不实现。

 

  第二步,当需要调用平台 api 的时候,在你的 app 中打开平台提供的一个授权界面(平台方的 sdk 通常会提供这一步的接口),并且,把第一步中提供的 url 传给这个界面。

  这个界面打开后可能类似下面这样:

  如果用户同意执行此操作,就会输入账号密码进行授权。授权通过后,平台就会自动调用第一步中提供的 url,并传过来一个 code。

 

  第三步,使用 code 去兑换 access token。

  平台必定有一个 api,接收 code 为参数,返回一个 access token 和一个 refresh token。在第一步的 api 中去调用这个平台 api。并且将获得的 access token 和 refresh token 保存在服务器上。到这里,就获取到可用的 access token 了。

 

  然而事情到这里还没完,是不是每一次需要调用平台的开放 api 的时候,都要重新获取一次 access token 呢?答案是否定的。在第三步中获取到的 access token 有一定的有效期,在过期之前可以一直重复使用。那么,access token 过期了之后怎么办呢?

  首先,我们怎么知道 access token 已经过期?答案是在使用 access token 去访问平台的开放 api 的时候,如果 access token 已过期,api 会报错,返回一个 token 无效的错误。此时,我们应该用 refresh token 去刷新 access token。具体的做法是查找平台的文档,找到刷新 access token 的 api,这个 api 必定需要 refresh token 作为参数。按照文档去调用就可以了。

 

转自:https://www.cnblogs.com/blowing00/p/12452446.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Access Token 机制详解 的相关文章

  • 胖哥亲自带你玩转Spring Security OAuth2

    参与Spring Security与OAuth2专栏限定免费学习群 xff0c 请从活动主页扫描第三个专栏学习群二维码入群 xff01 关于21天学习挑战赛活动细节 xff0c 请从点击活动主页了解 作者介绍 码农小胖哥 xff0c Spr
  • 21天,胖哥亲自带你玩转OAuth2

    参与Spring Security与OAuth2专栏限定免费学习群 xff0c 请从阅读原文扫描第三个专栏学习群二维码入群 xff01 关于21天学习挑战赛活动细节 xff0c 请点击 阅读原文了解 作者介绍 码农小胖哥 xff0c Spr
  • 基于Apache OLTU的OAuth2.0授权解决方案

    Apache OLTU实现了OAuth 2 0的规范 xff0c 是一种可靠的Java授权解决方案 但是 xff0c 官方文档实在是太惨不忍睹了 本文参考了开涛的 OAuth 2 0集成Shiro文章 模拟了OAuth2 0的认证流程 技术
  • Spring boot+Security OAuth2 自定义登录和授权页面

    在学习了Spring Security oAuth2 0框架的基础知识 xff0c 以及动手搭建简单的认证服务器和资源服务器的基础上 xff0c 我们开始实现自定义登陆和授权界面的开发 在实际的项目开发中 xff0c 我们需要根据需要自定义
  • Spring Security Oauth2 扩展grant_type

    Spring Security Oauth2 自定义grant type的实现 在使用Jhipster 搭建微服务框架时 xff0c 使用了jhipster 提供的uaa做用户认证授权 xff0c Jhipster uaa 是基于sprin
  • SpringSecurity OAuth2 获取Token端点TokenEndpoint、Token授权TokenGranter接口 详解

    1 前言 在 授权服务器是如何实现授权的呢 xff1f 中 xff0c 我们可以了解到服务端实现授权的流程 xff0c 同时知道 xff0c 当授权端点AuthorizationEndpoint生成授权码时 xff0c 就会重定向到客户端的
  • Spring Security OAuth2.0认证授权

    文章目录 1 基本概念1 1 什么是认证1 2 什么是会话1 3什么是授权1 4授权的数据模型1 4 RBAC1 4 1 基于角色的访问控制 2 基于Session的认证方式3 整合案例3 1 SpringMVC 43 Servlet3 0
  • 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    http www cnblogs com rereadyou p 3448381 html Yii 有很多 extension 可以使用 xff0c 在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 xff0c 发现了几个 OAu
  • 基于Apache OLTU的OAuth2.0授权解决方案

    Apache OLTU实现了OAuth 2 0的规范 xff0c 是一种可靠的Java授权解决方案 但是 xff0c 官方文档实在是太惨不忍睹了 本文参考了开涛的 OAuth 2 0集成Shiro文章 模拟了OAuth2 0的认证流程 技术
  • Spring Security OAuth2.0认证授权三:使用JWT令牌

    Spring Security OAuth2 0系列文章 xff1a Spring Security OAuth2 0认证授权一 xff1a 框架搭建和认证测试Spring Security OAuth2 0认证授权二 xff1a 搭建资源
  • SpringSecurity集成oauth2(jwt)

    版本 springboot版本 xff1a 2 2 7 RELEASE spring security oauth2版本 xff1a 2 3 6 RELEASE 主要依赖 span class token tag span class to
  • SpringSecurity整合OAuth2.0

    SpringSecurity整合OAuth2 一 概述与原理1 1 OAuth2 0 是什么 xff1f 1 2 OAuth2 0中角色解释1 3 OAuth2 0的4中授权模式1 3 1 授权码模式 xff08 重点 xff09 1 3
  • oauth2.0--基础--01--理论

    oauth3 0 基础 01 理论 1 快递员问题 1 1 问题描述 我经常点外卖 每天都有外卖员来送餐 我必须找到一个办法 让快递员通过门禁系统 进入小区 如果我把自己的密码 告诉快递员 他就拥有了与我同样的权限 就可以自由的出入小区 这
  • Google登录授权详细过程

    前言 这篇文章包含了google登录授权从API创建 到使用Java代码完成登录的一个完整demo 主要为了实现google关联用户的服务 如google merchant center等 如果仅仅需要使用google邮箱登录 建议由前端实
  • spring security oauth2——AbstractAuthenticationProcessingFilter

    AbstractAuthenticationProcessingFilter的作用 abstractAuthenticationProcessingFilter的职责也就非常明确 处理所有HTTP Request和Response对象 并将
  • Oauth2授权模式访问之授权码模式(authorization_code)访问

    Oauth3授权模式访问之授权码模式 authorization code 访问 获取code redirect uri可以随便写 在浏览器输入 注意是get请求方式 http localhost 8080 oauth authorize
  • oauth2.0的配置信息AuthorizationServerConfigurerAdapter

    继承AuthorizationServerConfigurerAdapter方法的配置 Configuration EnableAuthorizationServer public class Oauth2ServerConfig exte
  • Spring Oauth2-Authorization-Server jwt 认证

    Spring Oauth2 Authorization Server jwt 认证机制 基于 spring security oauth2 authorization server 0 2 3 配置 资源服务器配置 Bean Securit
  • 自定义实现OAuth2.0 授权码模式

    文章目录 OAuth2 0 授权码模式 实践 依赖知识 术语 授权码流程 认证服务器 拉起请求用户授权页面 用户手动授权 提交授权 生成code 下发Token 第三方应用 收到code并请求Token 访问受保护的资源 项目结构 Tomc
  • 在Kong网关中使用OAuth2认证

    文章目录 在Kong网关中使用OAuth2认证 前言 在Kong上开启HTTPS OAuth2认证 添加OAuth2插件 创建Consumer的OAuth2 credential 测试OAuth2 Authorization Flow 获取

随机推荐

  • 【Android】Android6.0+ 动态申请权限

    Android 6 0 SDK 版本号大于23后 对于普通权限可以在AndroidMinifest xml文件中可以直接使用 而对于那些危险权限 如 定位权限 通话 发送短信等 需要动态申请权限 下面是一个通过高德定位的案例 MainAct
  • request对象对请求体,请求头参数的解析

    1 请求体参数解析 1 1 GET请求 1 1 1 请求url中 xxx xxx格式为查询字符串参数 通过request GET获取请求参数 1 1 2 请求url中 xxx 2 xxx格式为路径参数 通过request GET获取 1 1
  • IDEA常用配置之双斜杠注释紧跟代码头

    文章目录 双斜杠注释改成紧跟代码头 双斜杠注释改成紧跟代码头
  • qRegisterMetaType-Qt中注册定义类型

    概述 如果想要我们自己自定义的类型也可以有 Qt 自己类型的功能的话 就必须注册我们的类型到 Qt 中 这样才可以在信号和槽的通讯机制中使用我们的自定义的类型 Q DECLARE METATYPE 被 Q DECLARE METATYPEQ
  • QMetaObject::connectSlotsByName: No matching signal for问题的解决方法

    之前是用转到槽的方式添加信号回调 现在发现结构混乱 改为手动connect 删掉之前的回调函数后 再编译 找到报错的地方 删除case 然后自己添加connect 注意此时代码运行会报 QMetaObject connectSlotsByN
  • java二维码工具类,中间带LOGO的,很强大 .

    java view plain copy print package com util cccm import java awt BasicStroke import java awt Graphics import java awt Gr
  • GAMES101-现代计算机图形学学习笔记(作业06)

    参考 https blog csdn net qq 36242312 article details 115495482 思路 上节课的代码 void Renderer Render const Scene scene std vector
  • Vue 核心插件 Vuex (一)

    目录 Vuex 是什么 Vuex 使用场景 Vuex的优势 Vuex的安装和使用 Vuex的安装 Vuex的配置使用 Vuex 是什么 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 库 它采用集中式存储管理应用的所有组件的
  • citespace的操作流程

    1 下载citespace 下载成功的前提是必须要有Java 参照网上的下载流程 建议bilibili上查看 2 打开citespace 1 2 选择keep using this version 3 弹出来窗口 选择Agree 一般是会弹
  • R语言中的管道操作

    前言 使用R语言进行数据处理是非常方便的 几行代码就可以完成很复杂的操作 但是 对于数据的连续处理 还是有人觉得代码不好看 要么是长长的函数嵌套调用 有点像Lisp感觉 括号包一切 要么就是每次操作赋值一个临时变量 啰嗦 为什么就不能像Li
  • Ubuntu Linux 解压 压缩 目录 .tar.xz .tgz .tar.gz .tar.bz2 .7z

    压缩 tar zcvf file tgz dir dir 是待压缩的目录 解压7z 7z x file 7z 安装7z sudo apt get install p7zip full 解压tar bz2 tar jxvf file tar
  • 配置Ubuntu初始使用软件——Ubuntu_install

    1 配置网络clash 复制clash文件 到主目录下 进入终端 cd clash chmod x clash clash d 再进入设置 设置代理 2 配置输入法 进入终端 安装fcitx sudo apt get install y f
  • python人工智能:命令行创建数据库(泉舟时代)

    1 授课 林德尧 泉舟时代 未来城市技术总监 2 主要文章内容 mysql uroot p create database xxx charset utf8 数据迁移 Flask migrate 官方链接 https flask migra
  • 数据的封装与解封装

    数据的封装与解封装 一 数据的封装与解封装 1 数据的封装过程 2 数据的解封装过程 二 数据的传输过程 1 相关概念 2 网络传输过程中数据封装和解封装模拟 一 数据的封装与解封装 1 数据的封装过程 数据封装过程 在这里我们举例说明 以
  • Android音视频开发(2)常用的系统播放器MediaPlayer

    1 状态图及生命周期 MediaPlayer是一个多媒体播放类 通过它控制音视频流或本地音视频资源的播放过程 它分为很多状态 如下图所示 图中的单箭头弧代表同步函数调用 双箭头弧代表异步函数调用 1 1 Idle状态 End状态以及生命周期
  • PromptDet: Towards Open-vocabulary Detection using Uncurated Images (ECCV2022)

    PromptDet Towards Open vocabulary Detection using Uncurated Images eccv2022 本文作者的核心目的是 在使用最少的人工成本下 来定位和识别 novel categori
  • AntD Pro登录页面,调用接口实现与服务器的交互

    AntD Pro登录 实现的功能 登录界面样式部分 点击提交 发送请求 server层接收请求 发送请求 调用后端接口 model层接收服务器返回的数据 并对数据进行处理 前端页面返回结果 渲染界面 总结 实现的功能 登录界面样式 判断登录
  • c++11 智能指针 (std::shared_ptr)(三)

    定义于头文件
  • 利用tcpcopy引流做模拟在线测试

    一 工具介绍 Tcpcopy是一个分布式在线压力测试工具 可以将线上流量拷贝到测试机器 实时的模拟线上环境 达到在程序不上线的情况下实时承担线上流量的效果 尽早发现bug 增加上线信心 Tcpcopy是由网易技术部于2011年9月开源的一个
  • Access Token 机制详解

    我们在访问很多大公司的开放 api 的时候 都会发现这些 api 要求传递一个 access token 参数 这个参数是什么呢 需要去哪里获取这个 access token 呢 access token 是在 Oauth2 0 协议中 客