首页 > 其他分享 >如何通过PKCE拿到AccessToken?

如何通过PKCE拿到AccessToken?

时间:2023-08-29 11:38:31浏览次数:34  
标签:Code AccessToken Challenge 拿到 Verifier code PKCE 授权 客户端

PKCE(Proof Key for Code Exchange)是一种用于增强OAuth 2.0授权流程安全性的技术,特别适用于公共客户端(如移动应用)的场景。它通过在授权请求中引入一个随机生成的Code Verifier和一个对应的Code Challenge,以及在交换令牌时验证这些值,从而增加了授权流程的安全性。

以下是在OAuth 2.0中使用PKCE获取Access Token的步骤:

  1. 创建Code Verifier和Code Challenge:
    在应用程序中生成一个随机字符串作为Code Verifier。然后,使用哈希函数(例如SHA-256)对Code Verifier进行哈希,生成Code Challenge。确保将Code Verifier保留在客户端,而将Code Challenge发送到认证服务器。

  2. 构建授权请求:
    创建授权请求,将以下参数包含在请求中:

    • response_type: 设置为 "code",表示使用授权码流程。
    • client_id: 客户端标识符。
    • redirect_uri: 重定向URI,用于接收授权码。
    • scope: 请求的权限范围。
    • code_challenge_method: 设置为 "S256",表示使用SHA-256哈希算法。
    • code_challenge: 上一步生成的Code Challenge。
  3. 用户授权:
    用户将被重定向到认证服务器的登录页面,要求他们登录并授权客户端访问所需的权限。

  4. 收到授权码:
    在用户授权后,认证服务器将重定向用户回到之前指定的重定向URI,并在URL参数中包含一个授权码。

  5. 交换令牌:
    在获得授权码后,客户端将使用此授权码进行令牌请求。构建令牌请求,将以下参数包含在请求中:

    • grant_type: 设置为 "authorization_code",表示使用授权码交换获取访问令牌。
    • code: 上一步收到的授权码。
    • redirect_uri: 与之前发送的重定向URI匹配。
    • client_id: 客户端标识符。
    • code_verifier: 之前生成的Code Verifier。
  6. 获得Access Token:
    认证服务器将验证授权码和Code Verifier的匹配性,如果匹配成功,将返回Access Token给客户端。

总结起来,PKCE是通过引入Code Verifier和Code Challenge来增加OAuth 2.0授权流程的安全性。在授权码交换阶段,认证服务器会验证Code Verifier和Code Challenge的匹配性,从而确保请求的合法性。这种方式特别适合用于安全性要求较高的场景,例如移动应用程序。

标签:Code,AccessToken,Challenge,拿到,Verifier,code,PKCE,授权,客户端
From: https://www.cnblogs.com/zhao-jie-li/p/17664295.html

相关文章

  • 怎样才能拿到期货开户最低的手续费
    怎样才能拿到期货开户最低的手续费呢,手续费就像我们做生意的成本,只有成本越低那利润才会越大,今天我为大家做个详细介绍。一、期货公司开户最低手续费期货交易实际手续费=交易所手续费+期货公司佣金,交易所手续费是统一固定的,就像股票中的印花税一样,每个公司都相同,不可调整,而佣金......
  • 总结:第一章:从入门到入职拿到过万月薪我需要这些技能(400多篇博文系统归类)P5级
    博文介绍:这篇博文我改了一周,职业生涯所有技能例如javaSE基础,ssm框架,springcloud全家桶,dubbo+zk框架,MySQL数据库,MongoDB数据库,redis缓存,es与solr全文搜索,linux系统,docker应用容器引擎,Activiti工作流,Fastdfs分布式文件系统,ActiveMQ与RabbitMQ消息队列,JUC并发线程工具......
  • 拿到一个新的芯片之后做的事
    一、首先,看半导体厂商是否有对应的开发板,有的话就直接用厂商的,I.MX6ULL是有的,没有的话就要看芯片手册自己画PCB制作。二、看芯片手册注意上电时序、串口1RXD上拉、启动方式。三、1、尝试点灯,看芯片手册,看引脚寄存器的地址、功能,参照STM32的程序设计此芯片的程序。使能时钟、......
  • 拿到开发板需要做的事情 -- 配置Python环境
    1.查看系统时间date-R 2.修改系统时间windows上时间项目时间正常,Ubuntu16.04上时间错误-贾斯丁哔哔-博客园(cnblogs.com) 3.安装pip3sudoapt-getupdatesudoapt-getinstallpython3-pip ......
  • SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新,由于使用了注解 @Tran
    SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新,由于使用了注解@Transactional事务进行处理原文链接:https://blog.csdn.net/qq_19903753/article/details/103367252SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新概述今天在进行coderev......
  • springboot的controller如何拿到post请求中的json数据
    在SpringBoot的Controller中,可以使用注解@RequestBody来获取POST请求中的JSON数据。我们可以将这个注解应用到一个Controller方法的参数上,Spring将会负责读取请求正文中的数据,将其反序列化为一个Java对象,并将其作为Controller方法的参数传递。以Java代码为例,示例代码如下:@RestC......
  • 前端拿到后端返回文件流后页面生成excel表格预览(Luckysheet)
    最近项目遇到一个需求,就是本来只需要导出的excel文件,客户要求在前端页面进行预览查看。在查找资料后,决定使用Luckysheet来进行excel文件的预览。1.安装npmiluckyexcel2.html中引入相关js,css文件,可以自己下下来放到本地引入<linkrel='stylesheet'href='https://cdn.......
  • java 爬虫模拟登陆 拿到cookies
    实现Java爬虫模拟登录获取Cookies概述在这篇文章中,我将教你如何使用Java编程语言实现爬虫模拟登录并获取Cookies。爬虫模拟登录是一种常见的网络爬虫技术,它可以模拟用户登录网站,获取登录后才能访问的资源。流程概览下面是整个模拟登录获取Cookies的流程概览:步骤描述......
  • 上月成功拿到字节跳动offer,全靠我啃烂了这份最新面试题
    前言不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备,所谓不打无准备的仗就是这个道理,以下为大家,描述了从面试准备到最后的拿到offer提供了非常详细的......
  • 上月成功拿到字节跳动offer,全靠我啃烂了这份最新面试题
    前言不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备,所谓不打无准备的仗就是这个道理,以下为大家,描述了从面试准备到最后的拿到offer提供了非常......