移动和桌面端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

目录
相关文章
|
7月前
|
NoSQL Redis
SSO单点登录核心原理
SSO单点登录核心原理
173 0
|
开发框架 .NET API
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
|
存储 JSON 开发框架
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (上)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用
|
数据安全/隐私保护
Jasny SSO支持哪些认证方式?底层原理是什么?
Jasny SSO支持哪些认证方式?底层原理是什么?
|
安全 网络安全 数据安全/隐私保护
Jasny SSO是如何处理安全性问题的?底层原理是什么?
Jasny SSO是如何处理安全性问题的?底层原理是什么?
112 0
|
数据安全/隐私保护 UED
SSO的优点是什么?
SSO的优点是什么?
524 0
|
存储 PHP 数据安全/隐私保护
Jasny SSO支持哪些PHP框架?底层原理是什么?
Jasny SSO支持哪些PHP框架?底层原理是什么?
170 0
|
存储 缓存 数据安全/隐私保护
Jasny SSO是如何处理用户会话的?底层原理是什么?
Jasny SSO是如何处理用户会话的?底层原理是什么?
100 0
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
199 0
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程