OAuth2的四种授权方式

news2024/11/24 20:26:13

OAuth2的四种授权方式

  • OAuth2的作用
  • OAuth2的四种授权方式
  • OAuth2相关名词
  • 授权码模式
    • 授权码模式的步骤
  • 简化模式
    • 简化模式的步骤
  • 密码模式
    • 密码模式的步骤
  • 客户端模式
    • 客户端模式的步骤

OAuth2的作用

  • 核心作用:颁发token,也就是令牌,token中一般包含用户信息和权限信息等
  • 保护Web应用程序:OAuth2提供了一种安全的授权机制,使得第三方应用可以在用户授权的情况下访问其信息,从而保护用户的隐私和数据安全。
  • 简化用户登录:通过OAuth2,用户可以在一次授权后,直接登录多个应用,无需在每个应用中重复输入用户名和密码,简化了用户的登录流程。
  • 提供更灵活的权限管理:OAuth2允许用户对第三方应用进行细粒度的权限控制,只授予其所需的最小权限。这有助于防止潜在的安全风险,例如过多或不必要的数据泄露。
  • 支持跨平台和跨设备访问:无论是Web应用、桌面应用还是移动应用,OAuth2都能提供统一的授权机制,使得用户的信息可以在不同的平台和设备之间无缝流转。
  • 促进服务间的互操作性:OAuth2提供了一种标准化的授权流程,使得不同的服务和应用可以互相认证和授权,促进了服务间的互操作性和生态系统的健康发展。

OAuth2的四种授权方式

  • 参考
  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

OAuth2相关名词

以QQ扫码登录为例子,我们都体验过在第三方应用上使用QQ扫码登录,比如CSDN,我们并没有在CSDN上直接注册账号,但是通过QQ扫码登录,授权之后,CSDN就会通过你的QQ信息在自己的网站上注册账号,就会对你的历史记录等进行保存。

  • Third-party application:第三方应用程序,也叫客户端,在这里就是CSDN。
  • HTTP service:HTTP服务提供商,这里的QQ。
  • Resource Owner:资源所有者,就是用户。
  • User Agent:用户代理,如Web浏览器、桌面应用程序或移动应用程序。
  • Authorization server:认证服务器/授权服务器,即服务提供商专门用来处理认证的服务器,就是QQ中提供认证授权的服务器。
  • Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器,就是QQ中保存资源的服务器。

授权码模式

  • 授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。
  • 支持refresh token功能最完整、流程最严密的授权模式,通常使用在公网的开放平台中。适用于有自己的服务器的应用,它是一个一次性的临时凭证,用来换取access_token和refresh_token。一旦换取成功,code立即作废,不能再使用第二次。对安全性要求较高,web项目中一般使用授权码模式。
  • 三方登录都是使用的这种方式保证安全

授权码模式的步骤

  • 用户访问客户端,客户端将用户导向认证服务器。
  • 选择是否给予客户端授权。
  • 如果用户给予授权,认证服务器将用户导向客户端事先指定的重定向URI,同时附上一个授权码。
  • 客户端收到授权码后,附上重定向URI,向认证服务器申请令牌。这一步是在客户端后台的服务器上完成的,对用户不可见。
  • 认证服务器核对授权码和重定向的URI,确认无误后,向客户端发送访问令牌和更新令牌。
    在这里插入图片描述

简化模式

  • 不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。
  • 流程简单,适用于纯静态页面应用。该模式下,access_token容易泄露且不可刷新,不安全。

简化模式的步骤

  • 用户访问客户端,客户端向用户显示授权页面,请求用户授权。
  • 用户同意授权后,客户端将用户导向认证服务器。
  • 认证服务器将用户导向客户端指定的重定向URI,并在URI中附加访问令牌和刷新令牌。
  • 客户端收到重定向URI后,从URI中提取访问令牌和刷新令牌。
  • 客户端使用访问令牌向资源服务器请求资源。
  • 资源服务器验证访问令牌后,向客户端返回资源。
  • 客户端定期使用刷新令牌向认证服务器请求新的访问令牌。
    在这里插入图片描述

密码模式

  • 用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。
  • 在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。
  • 这种模式主要用来做遗留项目升级为oauth2的适配方案。如果客户端是自家的应用,也可以支持refresh token。一般在内部系统中使用,调用者是以用户为单位。用户向客户端提供自己的用户名和密码,向“服务商提供商”换取access_token。一旦换取成功,code立即作废,不能再使用第二次。这种模式极度不安全,需要高度信任第三方应用,只适用于其他授权模式都无法采用的情况,原生APP可以使用,web不建议使用。

密码模式的步骤

  • 用户向客户端提供用户名和密码。
  • 客户端通过用户名和密码向认证服务器请求令牌。
  • 认证服务器验证用户名和密码是否匹配,如果匹配,则向客户端返回访问令牌。
  • 客户端使用访问令牌向资源服务器请求资源。
  • 资源服务器验证访问令牌是否有效,如果有效,则向客户端返回资源。
    在这里插入图片描述

客户端模式

  • 客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。
  • 我们的应用要使用微信登录等第三方登录,我们的应用就要申请成为微信或者其他支持三方登录平台的客户端。

客户端模式的步骤

  • 客户端向认证服务器进行身份认证,并要求一个访问令牌。
  • 认证服务器确认无误后,向客户端提供访问令牌。
  • 客户端使用访问令牌向资源服务器请求资源。
  • 资源服务器验证访问令牌是否有效,如果有效,则向客户端返回资源。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1421871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DB2 流浪之旅】 第一讲 Linux 环境安装 db2 数据库

DB2数据库是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。一般DB2是搭配IBM Power系列小机使用的,兼容性好、性能高。当然DB2也有Linux版本的,相对性能会差一些,主要…

密评机构资质和开展业务资料

一、概念 密码:《密码法》定义是指对信息进行加密保护、安全认证的技术、产品、服务。分为:核心密码、普通密码、商用密码。 商用密码:《密码法》定义是指对不涉及国家秘密内容的信息进行加密保护或安全认证所使用的密码技术和密码产品。 …

JVM 内存模型

1 什么是 JVM 内存模型 JVM 需要使用计算机的内存,Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间,JVM 将内存区划分为 5 块,这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加&#xff…

【Python机器学习系列】建立LightGBM模型预测心脏疾病(完整实现过程)

一、引言 前文回顾: 一文彻底搞懂机器学习中的归一化与反归一化问题 【Python机器学习系列】一文彻底搞懂机器学习中表格数据的输入形式(理论源码) 【Python机器学习系列】一文带你了解机器学习中的Pipeline管道机制(理论源码…

如何一键导出多张图片二维码?图片批量建码生成的方法

现在很多的物品信息都会生成一张单独的图片,然后生成二维码印刷到包装或者其他地方上使用,那么如何快速将多张图片多批量生码处理,相信有很多的小伙伴都不太清楚该怎么完成。其实,大量图片生成二维码的方法是很简单的,…

MySQL默认的连接数151如何修改

在MySQL中修改 max_connections 的值可以通过以下几种方法进行: 1. 临时修改 可以通过MySQL命令行临时修改 max_connections 的值。这种修改直到下次MySQL服务重启时才会失效。要进行临时修改,可以使用以下命令: SET GLOBAL max_connectio…

聊聊DoIP吧

DoIP是啥? DoIP代表"Diagnostic over Internet Protocol",即互联网诊断协议。它是一种用于在车辆诊断中进行通信的网络协议。DoIP的目标是在现代汽车中实现高效的诊断和通信。通过使用互联网协议(IP)作为通信基础,DoIP使得诊断信息能够通过网络进行传输,从而提…

【Go】微服务架构下实现etcd服务注册与服务发现

中心网关:gateway 四个微服务:user、message、note、relationship 1 中心网关实现服务发现 1.1 设计EtcdDiscovery类 package entityimport ("context""fmt"clientv3 "go.etcd.io/etcd/client/v3""gonote/gatewa…

C#,斐波那契数列(Fibonacci Sequence)的八种算法与源代码

一、莱昂纳多斐波那契(Leonardo Fibonacci) 斐波那契公元1170年生于意大利比萨,卒于1250年,被人称作“比萨的莱昂纳多”,是一名闻名于欧洲的数学家,其主要的著作有《算盘书》、《实用几何》和《四艺经》等。…

Github 2024-01-31 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5非开发语言项目3TypeScript项目1Jupyter Notebook项目1C项目1 基于项目的学习 创建周期&#xf…

SAP下载word

事务代码:STRANS 启动转换器 步骤 1. 将参数填入模板,并另存为word 2003 xml文档 2.使用网页打开xml文档,并将xml拷贝到转换器tt:template中,添加参数 3.替换参数,部分xml可能存在错误或者跑偏根据实际情况检查修改 …

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

数字孪生智慧能源电力Web3D可视化云平台合集

前言 能源电力的经济发展是中国式现代化的强大动力&#xff0c;是经济社会发展的必要生产要素&#xff0c;电力成本变化直接关系到工业生产、交通运输、农业生产、居民生活等各个方面&#xff0c;合理、经济的能源成本能够促进社会用能服务水平提升、支撑区域产业发展&#xf…

xcode安装visionOS Simulator模拟器报错解决方法手动安装方法

手动安装方法&#xff1a; 手动下载visionOS Simulator模拟器地址&#xff1a; https://developer.apple.com/download/all/ 选择 Xcode 版本 sudo xcode-select -s /Applications/Xcode.app # 用 Xcode-beta 的话是&#xff1a; # xcode-select -s /Applications/Xcode-beta…

Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】

目录 任务描述 知识回顾 实验内容 测试结果 Cache Lab 对应《CS:APP》6.3节至第六章结束的内容。 任务描述 Your job for Part A is to fill in the csim.c file so that it takes the same command line arguments and produces the identical output as the reference …

WAP在线封装APP工具:革新移动体验的技术

一、融合式设计&#xff1a;打破原生与网页应用的界限WAP封装App工具的最新版本已经能够实现无缝融合网页内容与原生应用功能。这些工具不仅仅是简单地将网页“包装”成APP&#xff0c;而是通过创新的融合式设计&#xff0c;让用户在使用过程中几乎感受不到两者之间的差异。例如…

Ruff应用:打破传统,IoT技术赋能工业制造数字化转型之路

近年来&#xff0c;随着物联网、大数据、云计算、5G等数字技术的快速应用&#xff0c;工业制造领域正在经历着前所未有的变革。工业4.0时代&#xff0c;各种数字技术与工业制造的结合&#xff0c;不仅提高了工业生产效率、降低运营成本&#xff0c;更是极大地推动了传统工业数字…

【深度学习每日小知识】Model Accuracy 模型准确率

Model Accuracy 模型准确率 模型准确性是衡量机器学习 (ML) 模型基于数据做出预测或决策的能力的指标。它是用于评估 ML 模型性能的常用指标&#xff0c;可用于比较不同模型的性能或评估特定模型对于给定任务的有效性。 有多种不同的方法来衡量模型的准确性&#xff0c;具体取…

Mac下手动源码编译安装Swig

使用Homebrew安装 这个方式最简单&#xff0c;但是一般都是安装的最新版&#xff1a; brew install swig如果按照特定版本&#xff0c;需要看一个当前支持的列表&#xff1a; brew search swig brew install swig3源码编译安装 swig依赖pcre库&#xff0c;需要先安装pcre …

Inventor 2024下载安装教程,免费使用,附安装包和工具,流程简单,小白也能轻松搞定

前言 Inventor是一款专业的三维可视化实体建模软件&#xff0c;Inventor.主要用于各类二维机械制图、三维制图的设计和开发等操作&#xff0c;可以广泛地应用于零件设计、钣金设计、装配设计等领域。 准备工作 1、Win7及以上系统 2、提前准备好 Inventor 2024 安装包 没有…