移动和桌面端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利用级联选择器实现全国省市区乡村五级菜单联动
|
网络协议
【开源视频联动物联网平台】J2mod库对指令码的定义
【开源视频联动物联网平台】J2mod库对指令码的定义
312 1
|
前端开发 NoSQL 关系型数据库
Kong网关介绍以及在Docker上部署容器以及Dashboard
Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能
2344 0
Kong网关介绍以及在Docker上部署容器以及Dashboard
|
10月前
|
存储 缓存 运维
阿里云服务器经济型e与通用算力型u1实例各自性能、适用场景区别及选择参考
在选择阿里云服务器实例规格时,经济型e实例和通用算力型u1实例因其高性价比和广泛适用性,备受个人开发者、中小企业的青睐。在同地域、相同配置的情况下,经济型e和通用算力型u1实例的价格相对于其他实例规格要低一些,很多个人和初创企业用户都会优先考虑选择这两个实例规格的云服务器,那么它们之间有什么区别?各自的性能、适用场景上有何区别?我们应该如何选择呢?本文将详细解析这两款实例的性能特点、适用场景、价格优势及购买建议,帮助用户更好地理解并选择合适的云服务器实例。
419 17
|
11月前
|
数据采集 安全 数据管理
深度解析:DataHub的数据集成与管理策略
【10月更文挑战第23天】DataHub 是阿里云推出的一款数据集成与管理平台,旨在帮助企业高效地处理和管理多源异构数据。作为一名已经有一定 DataHub 使用经验的技术人员,我深知其在数据集成与管理方面的强大功能。本文将从个人的角度出发,深入探讨 DataHub 的核心技术、工作原理,以及如何实现多源异构数据的高效集成、数据清洗与转换、数据权限管理和安全控制措施。通过具体的案例分析,展示 DataHub 在解决复杂数据管理问题上的优势。
1211 1
|
8月前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
|
自然语言处理 JavaScript 网络协议
简单使用vitepress快速搭建一个文档网站
VitePress 是一个静态站点生成器 (SSG),类似的项目有docsify、VuePress、hexo。用 Markdown 编写的内容生成可以轻松部署到任何地方的静态 HTML 页。
292 9
|
监控 网络协议 网络安全
SMTP操作使用详解并通过python进行smtp邮件发送示例
SMTP操作使用详解并通过python进行smtp邮件发送示例
472 3
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。
|
开发框架 前端开发 中间件
聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别
聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别
283 1