服务器身份认证:OAuth Device Code 流程

冬强小哥_7960

冬强小哥_7960

2026-06-15

789人浏览

原创

oauth device code流程仅提供单向认证:用户通过验证verification_uri域名确认授权服务器身份,设备端不校验服务器身份,导致攻击者可利用合法子域名和ui欺骗诱导用户授权,从而窃取令牌。

服务器身份认证:oauth device code 流程

OAuth Device Code 流程本身不提供服务器身份认证能力,它是一个客户端授权机制,核心目标是让无输入能力或输入受限的设备(如智能电视、IoT终端、CLI工具)安全地获得用户授权,而非验证服务器身份。

设备码流程中谁在认证?认证什么?

该流程中只有单向认证:用户端对授权服务器的身份有隐含依赖,但协议本身不强制执行服务器身份校验。具体来说:

  • 设备客户端向授权服务器发起请求时,只提交 client_id 和 scope,不验证对方是否为合法授权方
  • 用户在另一设备上访问 verification_uri(如 https://microsoft.com/device)时,需自行判断域名真实性——这是唯一可落地的“服务器身份确认”环节
  • 标准未要求设备端校验证书、校验 TLS 指纹或验证 OIDC 发行者(issuer)字段,因此无法抵御中间人或仿冒授权页攻击

为什么容易被用于钓鱼攻击?

根本原因在于流程设计默认信任用户能识别官方域名,而现实里用户常忽略地址栏细节:

蕉点AI
蕉点AI

一款AI图像与设计工具,主要用于AI电商商品图生成平台 | 智能商品素材制作工具,适合需要提升相关任务效率的用户。

下载
  • Tycoon2FA 等工具通过 Trustifi 链接跳转,最终落地页使用合法子域名(如 device-login-xyz.microsoft.com),绕过传统恶意域名检测
  • 用户看到“Microsoft”字样和相似 UI,直接输入 user_code,授权即完成,全程不暴露密码也不触发 MFA 二次验证
  • 攻击者拿到 device_code 后,轮询换取 access_token,等同于用户主动授予了长期访问权限

实际部署中如何补足服务器身份认证?

不能依赖协议原生能力,必须在实现层叠加防护措施:

  • 设备端发起 device_authorization 请求时,必须校验授权服务器 TLS 证书有效性,并显式配置可信 CA 或固定证书指纹
  • 返回的 verification_uri 必须白名单校验:只允许 microsoft.com、google.com、baidu.com 等已知合法根域及其预定义子路径
  • 用户扫码或输入 user_code 前,设备端应在本地显示 verification_uri 的完整域名并高亮标注(如 “✅ 正确来源:login.microsoftonline.com”)
  • 企业环境应启用 Conditional Access 策略,限制 device code 流程仅允许从特定 IP 段或已注册设备发起

开发者必须避开的典型误区

很多实现把安全责任完全推给用户,导致防御形同虚设:

  • 用 file_get_contents 或 curl 调用 device_authorization 端点却不校验证书(尤其 PHP 默认关闭 CURLOPT_SSL_VERIFYPEER)
  • 把 verification_uri 直接嵌入 WebView 加载,而非跳转系统浏览器——WebView 无法展示真实地址栏,用户无法核验域名
  • 未对 user_code 格式做长度与字符集校验(如微软要求 8 位大写字母+数字组合),导致伪造 code 提前触发轮询
  • 轮询 access_token 时未设置合理间隔(
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2752

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

829

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2496

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4632

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习