移动和桌面端OAuth2.0安全分析和CodeVerifier机制-阿里云开发者社区

开发者社区> 安全> 正文

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章