移动和桌面端OAuth2.0安全分析和CodeVerifier机制

简介: 桌面端和移动端是在App中内嵌浏览器辅助完成OAuth2.0整个流程 流程如图所示 ![image.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/e313c8b086b254807908639b2acbafff.png) OAuth2.0 Web端 1)返回authCode到指定Web redirectUri(此ur

桌面端和移动端是在App中内嵌浏览器辅助完成OAuth2.0整个流程
流程如图所示

image.png

OAuth2.0 Web端
1)返回authCode到指定Web redirectUri(此uri是应用开发者来配置)
2)换token需要传clientId和clientSecret验证client身份 (应用后端服务获取)

注意到以上两点,
1) 因为不是Web应用 redirectUri检测无效
2) 因为没有后端服务 clientSecret无安全可言
那么我们可能遭受到的攻击如下图所示,可能会有恶意的应用拦截authCode给AuthorizationServer发消息获取token,如此便未经客户给该应用授权而是给另外的正式的应用授权便拿到了token,达到了攻击的目的。

image.png

解决方案:
1.客户端生成一个随机字符串:code verifier,并保存好这个随机字符串
code_challenge = transform(code_verifier, [Plain|S256])
如果transform method是plain,那么code challenge等同于code verifier
如果transform method是S256,那么code challenge等于code verifier的Sha256哈希
2.在授权码请求中带上code challenge,以及生成code challenge的方法。这两者和服务端颁发的授权码被绑定了起来
3.获取授权码之后,客户端在用授权码换取Access Token的时候,带上初始生成的code verifier。服务端按照绑定的transform method对code verifier进行计算,计算的结果与绑定的code challenge进行对比,如果一致则颁发Access Token。

参考资料:
https://tools.ietf.org/html/rfc7636

目录
相关文章
|
SQL 缓存 JSON
vue利用级联选择器实现全国省市区乡村五级菜单联动
vue利用级联选择器实现全国省市区乡村五级菜单联动
|
前端开发 NoSQL 关系型数据库
Kong网关介绍以及在Docker上部署容器以及Dashboard
Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能
2728 0
Kong网关介绍以及在Docker上部署容器以及Dashboard
|
存储 关系型数据库 MySQL
MySQL控制流函数-if 、elseif、else、case...when
MySQL控制流函数-if 、elseif、else、case...when
738 0
MySQL控制流函数-if 、elseif、else、case...when
|
4月前
|
Kubernetes Cloud Native Nacos
MCP 网关实战:基于 Higress + Nacos 的零代码工具扩展方案
本文会围绕如何基于 Higress 和 Nacos 的 docker 镜像在 K8s 集群上进行分角色部署。
739 70
|
人工智能 缓存 Cloud Native
DeepSeek-R1 来了,从 OpenAI 平滑迁移到 DeepSeek的方法
Higress 作为一款开源的 AI 网关工具,可以提供基于灰度+观测的平滑迁移方案。
2359 246
|
网络协议 安全
|
NoSQL JavaScript 算法
Higress 全新 Wasm 运行时,性能大幅提升
本文介绍 Higress 将 Wasm 插件的运行时从 V8 切换到 WebAssembly Micro Runtime (WAMR) 的最新进展。
56040 104
|
自然语言处理 JavaScript 网络协议
简单使用vitepress快速搭建一个文档网站
VitePress 是一个静态站点生成器 (SSG),类似的项目有docsify、VuePress、hexo。用 Markdown 编写的内容生成可以轻松部署到任何地方的静态 HTML 页。
806 10
|
存储 域名解析 缓存
【域名解析DNS专栏】DNS解析中的分布式哈希表(DHT)应用
【5月更文挑战第29天】为解决DNS性能瓶颈和单点故障问题,分布式哈希表(DHT)技术被引入DNS解析,以实现分布式存储和检索,提高可扩展性和鲁棒性。DHT应用于DNS解析,包括负载均衡与数据分发、缓存优化和安全性增强。示例代码展示了DHT基本概念,但实际应用更复杂,需考虑更多因素。
654 2
|
XML Java Maven
Springboot Starter 是如何工作的?
Springboot Starter 是 Springboot 项目的一部分,简化了依赖管理和自动配置,通过 Maven 或 Gradle 引入相关依赖并自动配置应用程序。其核心特性包括依赖管理、自动配置及条件注解。Starter 的设计思维体现了模块化、约定优于配置、依赖注入等原则,提高了开发效率,但也存在调试复杂、过度依赖等问题。
768 3