当前位置: 首页 > web >正文

OAuth 2.0 安全最佳实践 (RFC 9700) password 授权类型已经不推荐使用了,将在计划中移除

在 OAuth 2.0 安全最佳实践 (RFC 9700) 中,已经不推荐使用 password 授权类型(资源所有者密码凭证授权)。根据你的代码注释,这个类型已经被标记为 @Deprecated,并计划在未来的版本中移除。

替代方案取决于你的具体使用场景:
对于 Web 应用:应该使用 AUTHORIZATION_CODE(授权码流程) + PKCE

AuthorizationGrantType.AUTHORIZATION_CODE
对于单页应用(SPA)或移动应用:同样推荐使用授权码流程 + PKCE

对于服务间通信:可以使用 CLIENT_CREDENTIALS

AuthorizationGrantType.CLIENT_CREDENTIALS

对于设备授权:可以使用 DEVICE_CODE

AuthorizationGrantType.DEVICE_CODE

对于需要交换令牌的场景:可以使用 TOKEN_EXCHANGE

AuthorizationGrantType.TOKEN_EXCHANGE

选择哪种替代方案取决于你的具体应用场景和安全需求。授权码流程 (AUTHORIZATION_CODE) 是目前最推荐的方式,因为它提供了更好的安全特性,包括防止中间人攻击和令牌泄漏。

OAuth 2.0 官方规范

RFC 6749 - OAuth 2.0 核心框架
官方文档: https://datatracker.ietf.org/doc/html/rfc6749
授权类型定义(Section 1.3):

authorization_code(授权码模式)
implicit(隐式模式,已不推荐)
password(密码模式,已不推荐)
client_credentials(客户端凭证模式)
refresh_token(刷新令牌)

RFC 8252 - OAuth 2.0 for Native Apps(移动端 & SPA 最佳实践)
官方文档: https://datatracker.ietf.org/doc/html/rfc8252

推荐使用 authorization_code + PKCE(Proof Key for Code Exchange)替代 password 和 implicit 模式。

RFC 9068 - JWT Profile for OAuth 2.0 Access Tokens
官方文档: https://datatracker.ietf.org/doc/html/rfc9068

JWT Bearer Token Flow(urn:ietf:params:oauth:grant-type:jwt-bearer)适用于某些企业级身份验证场景。

RFC 8628 - Device Authorization Grant(设备授权模式)
官方文档: https://datatracker.ietf.org/doc/html/rfc8628

适用于 IoT、智能电视等无浏览器设备,使用 urn:ietf:params:oauth:grant-type:device_code。

RFC 8693 - Token Exchange(令牌交换)
官方文档: https://datatracker.ietf.org/doc/html/rfc8693

适用于跨服务令牌交换,使用 urn:ietf:params:oauth:grant-type:token-exchange。

OAuth 2.0 安全最佳实践(BCP)

RFC 6819 - OAuth 2.0 Threat Model and Security Considerations
官方文档: https://datatracker.ietf.org/doc/html/rfc6819

安全威胁:password 模式容易受到凭据泄露攻击。

RFC 9700 - OAuth 2.0 Security Best Current Practice (BCP)
官方文档: https://datatracker.ietf.org/doc/html/rfc9700

明确反对 password 模式(Section 2.4):

“The Resource Owner Password Credentials grant (password grant) MUST NOT be used.”

推荐替代方案:

Web/SPA/Mobile: authorization_code + PKCE
Service-to-Service: client_credentials
Devices (IoT/TV): device_code
Token Exchange: token-exchange

Spring Security OAuth 2.0 文档

Spring Authorization Server 文档
官方文档: https://docs.spring.io/spring-authorization-server/docs/current/reference/html/

支持的授权类型:

authorization_code(推荐)
client_credentials(服务间通信)
refresh_token(令牌刷新)
urn:ietf:params:oauth:grant-type:device_code(设备授权)
urn:ietf:params:oauth:grant-type:token-exchange(令牌交换)

已弃用:

password(Spring Security 5.8+ 标记为 @Deprecated)

Spring Security OAuth 2.0 迁移指南

官方文档: https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
推荐使用 OAuth2AuthorizedClientManager 替代旧式 PasswordGrant 方式。

替代 password 授权的方案

场景推荐授权类型适用情况
Web 应用authorization_code + PKCE用户登录,最安全的方式
单页应用 (SPA)authorization_code + PKCE防止令牌泄露
移动应用authorization_code + PKCE避免存储密码
服务间通信client_credentials机器对机器(M2M)
IoT/智能设备device_code无浏览器设备
令牌交换token-exchange跨服务身份委托

说明:

authorization_code + PKCE

适用于所有前端应用(Web/SPA/移动端),取代 password 授权。
PKCE(Proof Key for Code Exchange)增强安全性,防止授权码拦截攻击。

client_credentials

适用于后端服务之间的认证(如微服务调用)。

device_code

适用于智能电视、IoT 设备等无法直接输入密码的场景。

token-exchange

用于在不同服务之间交换令牌(如将 Google Token 换成内部系统的 Token)。

http://www.xdnf.cn/news/16356.html

相关文章:

  • JS与Go:编程语言双星的碰撞与共生
  • vue2+node+express+MongoDB项目安装启动启动
  • go语言基础教程:【2】基础语法:基本数据类型(整形和浮点型)
  • js实现宫格布局图片放大交互动画
  • android app适配Android 15可以在Android studio自带的模拟器上进行吗,还是说必须在真机上进行
  • 无人机视觉模块技术解析
  • 【LeetCode Solutions】LeetCode 热题 100 题解(1 ~ 5)
  • [CSS]让overflow不用按shift可以滚轮水平滚动(纯CSS)
  • 【数据库】AI驱动未来:电科金仓新一代数据库一体机如何重构性能边界?
  • 半相合 - 脐血联合移植
  • Kingbasepostgis 安装实践
  • Go 官方 Elasticsearch 客户端 v9 快速上手与进阶实践*
  • R 语言绘制六种精美热图:转录组数据可视化实践(基于 pheatmap 包)
  • Redis替代方案:腾讯云TDSQL-C内存优化实战,TPS秒上涨
  • 大语言模型生成式人工智能企业应用
  • 水库大坝安全监测的主要内容
  • 微算法科技(NASDAQ:MLGO)采用分布式哈希表优化区块链索引结构,提高区块链检索效率
  • mac下 vscode 运行 c++无法弹出窗口
  • 《C++初阶之STL》【vector容器:详解 + 实现】
  • 智能问答分类系统:基于SVM的用户意图识别
  • Android Paging 分页加载库详解与实践
  • 航段导航计算机 (Segment_Navigator) 设计与实现
  • 重构 MVC:让经典架构完美适配复杂智能系统的后端业务逻辑层(内附框架示例代码)
  • 【MacOS】发展历程
  • HTTP 请求方法有哪些?
  • 《基于电阻抗断层扫描(EIT)驱动的肌肉骨骼模型表征人体手臂动态意图用于人机交互》论文解读
  • 当人机交互迈向新纪元:脑机接口与AR/VR/MR的狂飙之路
  • Spring Cloud Gateway 服务网关
  • 2025年第四届创新杯(原钉钉杯)赛题浅析-助攻快速选题
  • Android Studio 2024 内嵌 Unity 3D 开发示例