您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

由Raycast to flomo了解到OAuth 2.0之PKCE

时间:2022-05-05 10:27:37  来源:  作者:锅巴匆匆

五一期间在flomo官网的扩展中心看到了这个Raycast to flomo,对mac上的效率工具有了点了解,我直接基本都没有用过Mac自带的spotlight。。。

由Raycast to flomo了解到OAuth 2.0之PKCE

 

我好奇的不是竟然可以用这种方式发送到flomo,毕竟官网API摆在那,调一下也很简单,我惊奇的是Raycast跟Mac系统的风格比较搭配,看上去不错,就去Raycast的官网看了一下。

缘起

看了下Raycast的API文档,妥妥的对前端开发及其友好啊,大赞!

文档撸了一遍之后,我看到自己感兴趣的Auth部分。

由Raycast to flomo了解到OAuth 2.0之PKCE

 

用官网的demo试了试Twitter的oauth pkce登录流程,很顺畅,瞬间有了一种想给道招网也安排上,虽然本站基本只有我一个人会登录,很多年前我就把注册功能给禁用了,这次准备开放了。

自己顺便了解了一下PKCE流程

由Raycast to flomo了解到OAuth 2.0之PKCE

 

上图来自auth0.com

原来PKCE是为了优化现在流行的SPA应用token验证流程的。

OAuth2.0

先回顾下OAuth2.0流程:

由Raycast to flomo了解到OAuth 2.0之PKCE

 

在获取token的时候需要提供如下信息:

  1. code
  2. redirect_url
  3. client_id, client secret

第二项和第三项其实是用来对通过code获取token的client的合法性进行验证。其中最核心的应该是client secret。通过它可以解决如下问题:

对获取token的client进行合法性验证。secret是在Authorization Server上注册client的时候设置的,只有client自己知道,因此可以对client进行验证。

这样的话,即使code因为某种原因泄露了,没有secret也无法获取到token。从而提升了安全性。在传统的Web应用中,token的获取是发生在后端,因此secret也是保存在后端。这样是可行的。但是对于现在比较流行的SPA应用,token的获取是发生在浏览器端,是一个公开的环境。这个方法就不可行了,因为secret不可能保存在一个公开的环境中。

PKCE

PKCE主要是通过在授权的过程中增加了code_challenge和code_verifier两个元素来对整个流程进行验证,防止code被第三方截取的情况。具体流程如下:

由Raycast to flomo了解到OAuth 2.0之PKCE

 

这里面最核心的其实就是在authorize请求中增加了code_challenge参数,在token请求中增加了code_verifier参数。这两个参数最终都是依赖于一个client生成的随机字符串。

  • codeverifier:一个Client端生成的随机字符串(由字母,数字,- ,. , ,~ 组成)
  • code_challenge:由code_verifier生成的字符串。 生成算法为:BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))。

过程解析:

  1. 在申请授权时(authorize请求),client将code_challenge传给authorization server.(这个过程中code_verifier在网络中不会被暴露,因为对其进行了hash)。
  2. authorization server生成授权码后,会将code_challenge保存起来,并与授权码关联。
  3. 在通过授权码获取token的过程中,client会将code_verifier传给authorization server
  4. authorization server会将code_verifier按照第一步相同算法计算得到新的code_challenge
  5. authorization server将第四步计算得来的code_challenge与第一步中的原始code_challenge进行比较,如果相同则认为申请授权的源与用code获取token的源为同一来源。(即code没有被第三方截取而冒用)

客户端一般用oide-provider来对接PKCE。

参考文章

  • Authorization Code Flow with Proof Key for Code Exchange (PKCE)
  • 基于Identity Server4的OAuth 2.0授权总结(4)- PKCE in Authorization Code mode


Tags:OAuth   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
都 2023 年了,OAuth 为什么还是让人头疼?
【编者按】这篇文章介绍了 OAuth 的实践中的问题,如:OAuth 标准过于庞大和复杂、每个人的 OAuth 都有细微的不同、许多 API 在 OAuth 中添加了非标准的扩展、 调试 OAuth 很难...【详细内容】
2023-07-11  Search: OAuth  点击:(245)  评论:(0)  加入收藏
为什么 2023 年 OAuth 仍然很难
作者 | Robin Guldener策划 | 言征OAuth 是一个标准协议。基本上你可以想象的每种编程语言都有 OAuth 2.0 的客户端库。但有了客户端库,却并不意味着万事大吉,如果你能够在大...【详细内容】
2023-05-16  Search: OAuth  点击:(431)  评论:(0)  加入收藏
一个接口优雅的实现 Spring Cloud OAuth2 自定义token返回格式
大家好,我是不才陈某~最近读者朋友针对Spring Security oauth2.0 想要陈某补充一些知识,如下: 今天这篇文章就来回答其中一个问题:如何自定义token的返回格式?问题描述Spring Se...【详细内容】
2023-01-07  Search: OAuth  点击:(280)  评论:(0)  加入收藏
Oauth授权流程
我们经常会使用第三方的账号来登录某个平台,比如使用QQ账号登录爱奇艺,使用微博登录自如APP。而登录的过程中,会提示自如想访问你的微博公开资料、好友信息,或者爱奇艺要访问您Q...【详细内容】
2022-06-15  Search: OAuth  点击:(316)  评论:(0)  加入收藏
由Raycast to flomo了解到OAuth 2.0之PKCE
五一期间在flomo官网的扩展中心看到了这个Raycast to flomo,对Mac上的效率工具有了点了解,我直接基本都没有用过Mac自带的spotlight。。。 我好奇的不是竟然可以用这种方式发...【详细内容】
2022-05-05  Search: OAuth  点击:(344)  评论:(0)  加入收藏
一文搞懂OAuth2.0授权协议是怎么回事
前言截止到现在,一一哥 已经带各位把Spring Security中的主要功能学完了,并且剖析了这些内容的底层实现原理,希望你可以有所收获。但是在安全认证领域,还有另一种很重要的授权机...【详细内容】
2022-03-11  Search: OAuth  点击:(367)  评论:(0)  加入收藏
带你全面了解 OAuth2.0
最开始接触 OAuth2.0 的时候,经常将它和 SSO单点登录搞混。后来因为工作需要,在项目中实现了一套SSO,通过对SSO的逐渐了解,也把它和OAuth2.0区分开了。所以当时自己也整理了一篇...【详细内容】
2021-09-16  Search: OAuth  点击:(286)  评论:(0)  加入收藏
认证和授权中不得不提及的 OAuth、SSO、CAS、JWT
授权和认证是每个项目中不可或缺的一部分,脆弱的授权、认证流程会在恶意攻击中不堪一击,会在项目运行过程中无法承受高流量的冲击。在这个环节中,OAuth 认证、SSO 单点登录、CA...【详细内容】
2021-05-26  Search: OAuth  点击:(614)  评论:(0)  加入收藏
OAuth网络安全登录认证(一)
先总结一下现阶段网站开发中网络安全登录方面的几种架构。本人擅长的是java语言的,所以文章中大部分写的java方面的相关技术。第一种:前后端不分离的模式,像以前的spring+jsp、...【详细内容】
2021-05-07  Search: OAuth  点击:(470)  评论:(0)  加入收藏
OAuth网络安全登录认证(二)
本文开始讲springsecurity框架登录认证授权的一些知识点。为什么没有说shiro这个框架,主要是现在大部分的主流项目中,特别是前后端分离的项目中权限框架一般都用的是springsec...【详细内容】
2021-05-07  Search: OAuth  点击:(417)  评论:(0)  加入收藏
▌简易百科推荐
如何在Windows 10中查看电脑的名称?这里提供详细步骤
你想在有多台计算机组成的网络上查找你的计算机吗?一种方法是找到你的电脑名称,然后在网络上匹配该名称。下面是如何在Windows 10中使用图形和命令行方法查看你的计算机名称。...【详细内容】
2024-04-10  驾驭信息纵横科技    Tags:Windows 10   点击:(6)  评论:(0)  加入收藏
移动版 Outlook 解锁新技能,可验证登录 OneDrive 等微软服务
IT之家 4 月 9 日消息,微软公司近日发布新闻稿,宣布用户可以使用 Outlook 手机应用,轻松登录 Teams、OneDrive、Microsoft 365 以及 Windows 等微软账号服务。移动端 Outlook...【详细内容】
2024-04-09    IT之家  Tags:Outlook   点击:(7)  评论:(0)  加入收藏
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08    IT之家  Tags:Win10   点击:(11)  评论:(0)  加入收藏
电脑卡顿怎么重装系统,快看这篇
电脑卡顿时,重装系统确实是一种可能的解决方案。以下是重装系统的详细步骤:备份重要数据:首先,你需要将电脑中的重要文件和数据备份到外部存储设备(如U盘、移动硬盘或云存储)中,以...【详细内容】
2024-04-04  科技数码前锋    Tags:重装系统   点击:(4)  评论:(0)  加入收藏
如何检查电脑的最近历史记录?这里提供详细步骤
如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。如何检查我的计算机的最近历史记录要检查计算机的最近历史记录,应该从web浏...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:历史记录   点击:(6)  评论:(0)  加入收藏
关于Windows中AppData的相关知识,看这篇文章就可以了
如果AppData文件夹占用了你电脑上的太多空间,则需要清理AppData文件夹。下面是一些帮助你在Windows计算机上进行AppData清理的方法。什么是AppData文件夹AppData文件夹是保存...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:AppData   点击:(10)  评论:(0)  加入收藏
微软 Edge 浏览器将迎来“内存限制器”功能,用户可自主控制 Edge 内存占用
IT之家 3 月 28 日消息,微软即将为其 Edge 浏览器带来一项实用新功能,据悉该公司正在测试一项内置的内存限制器,这项功能可以让用户限制 Edge 所占用的内存,防止浏览器超出内存...【详细内容】
2024-03-29    IT之家  Tags:Edge   点击:(21)  评论:(0)  加入收藏
一寸照片的大小如何压缩?四个实测效果很好的方法
一寸照片作为生活中常见的尺寸之一,常用于各类证件照与证明文件的制作。然而,受限于其较为狭小的尺寸,上传及打印过程中很容易出现尺寸超限的情况。所以,这个时候就需要对其体积...【详细内容】
2024-03-18  宠物小阿涛    Tags:压缩   点击:(20)  评论:(0)  加入收藏
手机投屏到电脑/电视的方法
方法一:Win10自带的投影功能1、将手机和电脑连接同一个无线网络。2、选择【开始】>【设置】>【系统】>【投影到此电脑】3、将默认的始终关闭的选项更改为所有位置都可用。4、...【详细内容】
2024-03-18    老吴讲I  Tags:投屏   点击:(20)  评论:(0)  加入收藏
微软商店怎么卸载应用 一分钟快速看懂!
微软商店怎么卸载应用 一分钟快速看懂!微软公司(Microsoft Corporation)是一家全球领先的科技企业,总部位于美国华盛顿州的雷德蒙德。成立于1975年,由比尔·盖茨和保罗&mid...【详细内容】
2024-02-27  婷婷说体育    Tags:微软商店   点击:(42)  评论:(0)  加入收藏
站内最新
站内热门
站内头条