OAuth2.0授权协议与客户端授权码模式详解

OAuth2.0是互联网开放平台广泛使用的授权协议,确保用户信息安全。本文介绍了OAuth2.0的角色定义和四种授权模式:授权码模式、简化模式、密码模式和客户端模式,以及它们各自适用的场景。授权码模式适用于有服务器应用,简化模式适合纯静态页面,密码模式用于内部系统,客户端模式则在内部API调用中使用。理解这些模式有助于在不同系统间安全地实现资源访问。
摘要由CSDN通过智能技术生成

本文来重点讲解下OAuth2.0授权协议与客户端授权码模式


什么是OAuth协议

2012年10月,OAuth 2.0协议正式发布为RFC 6749。现在百度开放平台,腾讯开放平台等大部分的开放平台都是使用的OAuth 2.0协议作为支撑。OAuth是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。

OAuth 协议为用户资源的授权提供了一个安全又简易的标准。与以往的授权方式不同之处是 OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth是安全的。OAuth 是 Open Authorization 的简写


交互过程

在OAuth 2.0的认证和授权的过程中主要包括以下角色定义:

  • Resource owner: 资源所有者(通常指用户或者提供资源服务的平台)
  • Resource server:资源服务器(托管受保护资源的服务器)
  • Client:客户端(浏览器、APP)
  • Authorization server:授权服务器(颁发访问令牌、验证令牌、刷新令牌)

OAuth 在 “客户端” 与 “服务提供商” 之间,设置了一个授权层(authorization layer)。“客户端” 不能直接登录 “服务提供商”,只能登录授权层,以此将用户与客户端区分开来。“客户端” 登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。“客户端” 登录授权层以后,“服务提供商” 根据令牌的权限范围和有效期,向 “客户端” 开放用户储存的资料。

在这里插入图片描述

以下为QQ的授权页面,采用的是授权码模式

在这里插入图片描述


客户端授权模式

授权码模式

适用于有自己的服务器的应用,它是一个一次性的临时凭证,用来换取 access_token 和 refresh_token。一旦换取成功,code 立即作废,不能再使用第二次。

  • 用户请求网站,如:www.tangyuewei.com
  • 重定向到一个授权页面
  • 用户同意授权
  • 重定向到应用的一个回调地址,如:www.tangyuewei.com/recieve_token?code=123
  • 用code换取access_token和refresh_token

授权码模式(功能最完整、流程最严密的授权模式,通常使用在公网的开放平台中)


简化模式

简化模式适用于纯静态页面应用。该模式下,access_token 容易泄露且不可刷新。不安全,适用于纯静态页面应用

  • 用户请求网站,如:www.tangyuewei.com
  • 重定向到一个授权页面
  • 用户同意授权
  • 重定向到网站,并带上access_token如:www.tangyuewei.com?access_token=123
  • 获取到资源服务器的资源

密码模式

用户向客户端提供自己的用户名和密码,向 “服务商提供商” 换取 access_token 。一般在内部系统中使用,调用者是以用户为单位

在这里插入图片描述


客户端模式

如第三方,或者调用者是一个后端的模块,没有用户界面的时候,可以使用客户端模式。鉴权服务器直接对客户端进行身份验证,验证通过后,返回 token。一般在内部系统之间的API调用。两个平台之间调用。调用者是以平台为单位

在这里插入图片描述


接入公司内部系统

后台管理系统

后台系统之间资源互相访问,如:日志模块,发邮件模块,发短信模块等(平台资源)。

需要引用相关模块的系统可采用客户端模式授权


前台业务系统

前台系统之间资源互相访问,如:用户信息,模块等(用户资源)。

需要引用相关模块的系统可采用密码模式授权


本文小结

综合上述模式及认证流程,个人觉得以下场景可以考虑引入Oauth 2.0认证:

  • 系统敏感资源服务进行安全认证及资源保护工作
  • 多个服务的统一登录认证中心、内部系统之间受保护资源请求
  • 将受保护的用户资源授权给第三方信任用户
  • 以后要做开发平台类似百度开放平台,腾讯开放平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值