五一期间在flomo官网的扩展中心看到了这个Raycast to flomo,对mac上的效率工具有了点了解,我直接基本都没有用过Mac自带的spotlight 。。。
文章插图
我好奇的不是竟然可以用这种方式发送到flomo,毕竟官网API摆在那,调一下也很简单,我惊奇的是Raycast跟Mac系统的风格比较搭配,看上去不错,就去Raycast的官网看了一下 。
缘起看了下Raycast的API文档,妥妥的对前端开发及其友好啊,大赞!
文档撸了一遍之后,我看到自己感兴趣的Auth部分 。
文章插图
用官网的demo试了试twitter的oauth pkce登录流程,很顺畅,瞬间有了一种想给道招网也安排上,虽然本站基本只有我一个人会登录,很多年前我就把注册功能给禁用了,这次准备开放了 。
自己顺便了解了一下PKCE流程
文章插图
上图来自auth0.com原来PKCE是为了优化现在流行的SPA应用token验证流程的 。
OAuth2.0先回顾下OAuth2.0流程:
文章插图
在获取token的时候需要提供如下信息:
- code
- redirect_url
- client_id, client secret
对获取token的client进行合法性验证 。secret是在Authorization Server上注册client的时候设置的,只有client自己知道,因此可以对client进行验证 。
这样的话,即使code因为某种原因泄露了,没有secret也无法获取到token 。从而提升了安全性 。在传统的Web应用中,token的获取是发生在后端,因此secret也是保存在后端 。这样是可行的 。但是对于现在比较流行的SPA应用,token的获取是发生在浏览器端,是一个公开的环境 。这个方法就不可行了,因为secret不可能保存在一个公开的环境中 。
PKCEPKCE主要是通过在授权的过程中增加了code_challenge和code_verifier两个元素来对整个流程进行验证,防止code被第三方截取的情况 。具体流程如下:
文章插图
这里面最核心的其实就是在authorize请求中增加了code_challenge参数,在token请求中增加了code_verifier参数 。这两个参数最终都是依赖于一个client生成的随机字符串 。