登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
图解Browser端访问OAuth2 API的安全性问题与解决方案 ...
图解Browser端访问OAuth2 API的安全性问题与解决方案
[ 复制链接 ]
固拆棚
2025-5-29 18:57:36
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API。
我最近做了一些这方面的研究,因为OAuth2中有secret key的存在,所以纯粹的客户端是不行的,但是服务端仅仅参与认证过程,由浏览器去调用REST API则是完全可行的。
于是比如你想开发一个github应用,那么服务端只需要一个没有界面的Auth服务就可以了,大部分的工作可以让浏览器端完成,这个架构可以大大减轻服务器的压力,对于不熟悉后端语言的前端工程师来说,是个不错的选择。
首先传统的oauth过程是这样的:
首先由跳转到OAuth服务器的登录认证页面,进行登录或者授权(假如已经在别的地方登录,就只需要授权):
然后服务端通常会返回302跳转到一个带ticket参数的网址,这个网址一般是在OAuth服务器注册的地址,也有些OAuth允许客户端指定:
这样浏览器端拿到302后,会自动转到App服务器,因为请求的Query String里面带了ticket,App Server于是拿到了ticket。客户端对App Server的请求是非Https,这个ticket是不怕被截获的,因为ticket是一次性的,而且攻击者拿到了ticket没有secret key是没法去Oauth服务器骗取token的:
App Server再对Oauth Server发HTTP请求,带上Secret Key:
OAuth服务器会把access_token传给App Server:
原本如果只用服务端访问REST API,这个token保存在服务端就可以了,但是我们现在希望直接在浏览器端用XHR去访问REST API,所以我们必须把token传给浏览器端。
这时候问题出现了,对于大部分开发者而言,花钱买个证书走https是不现实的,而http请求中明文传递token是可能被截获的:
token中包含用户授权信息,只要黑客截获了token,就可以冒充用户身份去Oauth服务器为所欲为:
解决的办法是使用RSA在浏览器端生成一对RSA密钥,然后把公钥传给App Server(建议用cookie,非常方便),Server用公钥加密token后传回给客户端。
我使用的是斯坦福大学的RSA开源实现(这个真的是非常高质量的RSA实现,向斯坦福师生致敬)
http://www-cs-students.stanford.edu/~tjw/jsbn/
学者们的实现比较文艺,依赖关系稍微有些复杂,这里我把所有文件打了个包,方便大家下载:
/Files/winter-cn/RSA.rar
over,接下来在浏览器端去使用token吧。
github API 的一个开源实现,请看 https://github.com/wintercn/github.wind
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
图解
Browser
访问
OAuth2
API
相关帖子
JumpServer 堡垒机- 终端安全访问控制策略手册
使用 swagger-typescript-api 在前端项目里生成请求代码
cookie,session,token,jwt,oauth2 有什么区别?
阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
Flask入门:轻松掌握API路由定义
微商城系统 api.php存在RCE漏洞
python调用大模型api来进行对话
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
如同在远程的局域网一样访问其中所有内网服务——真正的远程办公体验
VUE中使用AXIOS包装API代理
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
JumpServer 堡垒机- 终端安全访问控制策略手册
2
298
嗦或
2025-11-24
业界
使用 swagger-typescript-api 在前端项目里生成请求代码
1
998
电棘缣
2025-11-27
业界
cookie,session,token,jwt,oauth2 有什么区别?
1
202
万俟谷雪
2025-11-27
安全
阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
0
447
坪钗
2025-11-29
业界
Flask入门:轻松掌握API路由定义
3
150
缣移双
2025-12-01
教程
微商城系统 api.php存在RCE漏洞
1
42
新程序
2025-12-03
安全
python调用大模型api来进行对话
0
139
艾晓梅
2025-12-04
安全
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
0
982
邹语彤
2025-12-08
安全
如同在远程的局域网一样访问其中所有内网服务——真正的远程办公体验
2
895
抑卞枯
2025-12-09
安全
VUE中使用AXIOS包装API代理
1
532
峰邑
2025-12-12
回复
(3)
莘度
2025-10-14 02:51:29
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
鲫疹
3 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
呼延冰枫
昨天 09:52
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
固拆棚
昨天 09:52
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
127
.NET周刊【11月第4期 2025-11-23】
187
Oracle回滚与撤销(Undo)技术:从理论到实
218
吴恩达深度学习课程四:计算机视觉 第二周
854
jetson nano的ssh远程登录连接
637
Categraf 监控采集器常见问题汇总
824
11月和12月求职总结
949
2026年成都品牌主,如何选择AI优化搜索(AI
367
01 相向双指针
484
制造行业项目管理工具选型经验分享(简直是
251
vue 甘特图 vxe-gantt table 任务条可拖拽
24
Antd 在 Next.js 项目中,初次渲染样式丢失
935
1分钟安装N8N-2.0中文版!解除组件限制,界
212
Tomcat部署zrlog——处理动态数据的环境
881
Kafka简介
189
记录 Windows系统开启hyper-v ,部分端口被
506
1.java基本语法
533
从诊断到质保,为您揭秘一次靠谱的上海防水
506
PostgreSQL数据库在Windows上实现异地自动
338
C语言实现单片机上的malloc函数功能
329
poloapi 深度测评:99.8% 可用性 + 零代码