Oauth2学习日志

概要

Oauth2是一种开放标准,方便于第三方平台授权,在不接触用户隐私信息(用户名和密码等信息)的情况下,被用户授予访问开放平台资源接口的部分资源权限,它不仅保护了用户的隐私和安全,还为第三方应用提供了便捷的资源访问方式。

主要成员构成

  1. Client(客户端):需要访问资源接口的应用程序,需要向开放平台注册
  2. Resource Owner(资源拥有者):用户,授予客户端访问受保护资源的凭证
  3. Resource Server(资源服务器):资源存放处
  4. Authorization Server(授权服务器):校验客户端权限凭证并发放Access-Token(访问令牌)Refresh-Token(刷新令牌)
  5. User-Agent(用户代理):浏览器或者APP等
    注:资源服务器和授权服务器可以放在一起,也可以都是单独的实体

基本流程

  1. Client请求Resource Owner获取访问受保护资源的凭证,最好是通过Authorization Server(授权服务器)为中介获取,也就是客户端直接向授权服务器申请,但是实际审批是资源拥有者
  2. Client收到授权凭证,根据不同授权模式有不同的体现
  3. Client携带授权凭证请求Authorization Server颁发令牌
  4. Authorization Server验证客户端身份和授予凭证,并颁发Access-Token以及Refresh-Token
  5. Client携带Access-Token请求Resource Server访问受保护资源
  6. Resource Server验证访问令牌,有效则满足客户端服务请求
    注:Refresh-Token(刷新令牌)用于访问令牌失效后,不用再次走一遍流程,而直接访问授权服务器的刷新令牌接口,直接获取新的访问令牌

![[图片/Pasted image 20240624025807.png]]

四大授权模式

授权码模式(推荐)

  • 流程

  1. Client引导Resource Owner通过用户代理(APP、Web等)到Authorization Server进行验证
  2. 授权服务器验证资源所有者身份,并确定是否允许客户端访问请求
  3. 资源拥有者同意,则根据客户端提供的重定向URL携带授权码code和本地状态state(非必要)
  4. 客户端接回调接口校验state是否本地拥有,确定授权者平台身份
  5. 客户端携带Client_idClient_secretcodegrant_type=authorization_code请求授权服务器获取访问令牌和刷新令牌
  6. 授权服务器验证客户端身份是否注册,以及验证授权码,颁发访问令牌和刷新令牌,返回重定向URL
  7. 客户端用访问令牌请求资源服务器访问受保护资源
  8. 资源服务器校验令牌有效性,并开放资源接口

在这里插入图片描述

  • 主要访问接口及参数

    申请授权码接口

![[图片/Pasted image 20240625195801.png]]

申请令牌接口

![[图片/Pasted image 20240625200336.png]]

简单模式(隐式授权)

在授权码的基础上减少了申请授权码的过程,授权服务器直接返回令牌给客户端,不安全容易暴露令牌。
相比于授权码模式,令牌会存储在客户端的后端,在后端进行对资源服务器的访问,安全性更

简单模式结构图

密码模式

用户直接将用户名和密码给客户端,客户端使用信息访问授权服务器获取令牌
需要用户对客户端的高度信任

在这里插入图片描述

客户端模式

客户端直接以自己的名义对授权服务器进行申请

在这里插入图片描述

场景选择

  • 授权码模式: 适用于桌面应用程序和服务器端应用程序。
  • 简化模式: 适用于移动应用程序和单页面应用程序。
  • 密码模式: 适用于无状态客户端,如浏览器扩展程序。
  • 客户端模式:适用于移动端

总结

无论是哪种授权模式,都是都是为了从认证服务器获取Access Token,用来访问资源服务器。在选择模式进行应用的时候,需要考虑到安全性和可支持性。
SpringSercurity整合Oauth2还待实践。

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值