什么是OAuth2.0

前言

OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版

一.为什么使用OAuth2.0?

在前言我们介绍了OAuth2.0的作用,但是与其他登录方式相比我们为什么要选择OAuth2.0呢?

案例讲解:

在我们平常的生活中很多应用程序中会需要登录,但是在普通的一个App中我们常见的一般是用到账号密码登录,所以在每次进行登录操作时我们都需要进行输入账号密码,这时候肯定会有人说了,我登录一次就可以在我的设备上记住密码了,那么假设更换设备时是不是还是需要输入账号和密码,所以在频繁得使用账号密码登录的时候往往安全性就大大降低了,这时候OAuth2.0的作用就体现出来了,我们使用第三方账号进行登录时,只需要对当前App程序或者网站进行授权即可,并不需要频繁得使用账号密码进行登录,大大降低了我们账号密码泄露的风险,以我们的微信登录为例,微信拥有强大的身份验证机制的同时还可以对网站授权的权限进行管理,这不仅对我们权限的管理提供了更好的体验,也提高了我们用户信息的安全性

小结:OAuth 提供了更安全、便捷且用户友好的身份验证和授权机制,尤其适用于需要集成第三方服务的应用程序

 二.OAuth2.0授权机制

1.OAuth2.0角色

  1. 资源所有者(Resource Owner):通常是最终用户,他拥有资源(例如数据),需要授权第三方应用访问这些资源。

  2. 客户端(Client):即第三方应用程序,希望访问资源所有者的受保护资源。

  3. 授权服务器(Authorization Server):负责认证资源所有者并颁发访问令牌(Access Token)给客户端。

  4. 资源服务器(Resource Server):保护受控制的资源,只对有效的访问令牌持有者提供访问。

2.OAuth2.0授权流程 

 2.1授权码模式(Authorization Code Grant):

  1. 客户端重定向:客户端将用户重定向到授权服务器,请求授权,并提供自己的标识。

  2. 用户授权:用户在授权服务器上登录,并同意授权客户端。

  3. 授权码颁发:授权服务器生成一个授权码,并将其传递给客户端。

  4. 令牌请求:客户端使用授权码请求访问令牌(Access Token)。

  5. 访问令牌颁发:授权服务器验证授权码,如果有效,颁发访问令牌。

  6. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

令牌的特点:

  1. 令牌又时效性,一般是短期的,且不能修改,密码一般是长期有效的
  2. 令牌可以由颁发者撤销,且即时生效,密码一般可以不用修改而长期有效
  3. 令牌可以设定权限的范围,且使用者无法修改

在使用令牌时需要保证令牌的保密,令牌验证有效即可进入系统,不会再做其他的验证。

2.2 密码授权模式(Resource Owner Password Credentials Grant):

  1. 用户凭证:用户将用户名和密码直接提供给客户端。

  2. 令牌请求:客户端使用用户提供的凭证向授权服务器请求访问令牌。

  3. 访问令牌颁发:授权服务器验证用户凭证,如果有效,颁发访问令牌。

  4. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

2.3 客户端凭证模式(Client Credentials Grant):

  1. 客户端身份验证:客户端使用自己的身份凭证向授权服务器请求访问令牌。

  2. 访问令牌颁发:授权服务器验证客户端身份,如果有效,颁发访问令牌。

  3. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

2.4 简化(隐式)模式(Implicit Grant)

  1. 重定向到授权服务器:客户端直接将用户重定向到授权服务器,并请求授权,不同于授权码授权流程,不需要授权码交换步骤。

  2. 用户授权:用户在授权服务器上登录并同意授权请求。

  3. 直接颁发令牌:授权服务器直接向客户端返回访问令牌,不再颁发授权码。这个令牌直接由浏览器接收,并在重定向过程中传递给客户端。

  4. 访问资源:客户端使用获得的访问令牌去访问资源服务器上的受保护资源。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】Ubuntu下安装spyder及matplotlib中文显示

一、查看Ubuntu版本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy尝试用cat /etc/debian_version命令,竟然可以显示出来Debian的版本。 $ cat /etc/debian_version …

北斗三号海上人员落水报警及示位搜救系统

海洋水上作业中,人员落水问题时有发生,过去救援人员很难获取落水人员呼救信息、确定落水人员位置、事故发生时间以及事态严重程度,以给予最及时的救援,管理人员都对此无计可施,缺乏有效技术手段是目前海上事故救援效率…

如何使用JuiceSSH实现手机端远程连接Linux服务器

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

2023年小型计算机视觉总结

在过去的十年中,出现了许多涉及计算机视觉(CV)的项目,无论是小型的概念验证项目还是更大规模的生产应用。应用计算机视觉的方法是相当标准化的: 1、定义问题(分类、检测、跟踪、分割)、输入数据(图片的大小和类型、视野)和类别(正是我们想要的) 2、注释…

WEB 3D技术 three.js 通过分组顶点 给同一个物体设置多个材质

上文 WEB 3D技术 three.js 集合体 讲解三角形构建图形 顶点概念 顶点值重用 我们讲到 一个元素是由多个面组成的 那么 我们是不是可以一个物体用多个材质? 简单说 一个面用一种材质 我们还是在官网中搜索 geome 如下图选择 然后 找到 groups 顶点组 它能够将我们的…

Abaqus随机单元删除插件:Random Element Del - AbyssFish

插件介绍 Random Element Del - AbyssFish 插件可在Abaqus软件内对自建网格部件进行指定区域内的随机单元删除,可用于生成指定孔隙率或模拟缺陷等。 插件使用中指定需要进行删除的部件,这里的部件需要为网格部件。设定删除单元的比例参数(…

使用Java语言统计一行字符串的数据

方法 创建字符串接收器,接收用户输入的字符串,然后将其转换为字符串数组,安装字符对应的字节码进行判断。 代码 import java.io.*; public class StaticsChar {public static void main(String[] args) throws IOException{String zifuch…

如何使用Docker部署Dashy并无公网ip远程访问管理界面

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…

2023年全球前端大技术大会(GMTC北京站2023)-核心PPT资料下载

一、峰会简介 大会以“业务至上,效率为王”为主题,策划了 1 个主会场,10 个技术专场。会议议题包含前端 DevOps 实践、低代码、大前端监控、跨端技术选型、团队可持续发展、IoT 动态应用开发、移动端性能与效率优化、TypeScript、大前端技术…

【期末复习】微信小程序复习大纲( 1- 5 章)

前言: 这周开始进入期末复习周,没时间看C/C、linux等知识了,先把期末考试必考的知识捋一遍。 目录 第一章 微信小程序入门 一、填空题 二、判断题 三、选择题 四、简答题 第二章 微信小程序页面制作 一、填空题 二、判…

三叠云工程劳务管理,优化建筑施工管理,提升效率与质量

随着建筑行业的蓬勃发展,工程施工现场管理变得愈发复杂。传统的人员管理方式已经无法满足企业快速发展的需求。如何提高施工效率、优化人力资源管理成为了建筑企业亟待解决的问题。逐渐走向数字化的工程建设行业,急需一种足以匹配这一时代变革、高效管理…

两台苹果手机靠近迁移数据,教你如何一键换机!

我们在更换新手机时,如果没有将旧手机的数据迁移到新手机上,一旦旧手机丢失或者无法正常启动,那么所有数据将会丢失。更换手机后,及时迁移手机数据可以避免数据丢失。那么,两台苹果手机靠近迁移数据怎么操作&#xff1…

k8s:kubernets

自动部署、自动扩展和管理的容器化部署的应用程序的一个开源系统 k8s负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具 可以以分布式和集群化的方式进行容器管理 1.18版本,目前最多的是1.20版本,最新的是1.29版本&am…

第八部分 函数

定义 8.1 设 F 为二元关系 , 若 ∀ x ∈ dom F 都存在唯一的 y ∈ ran F 使 xFy 成立 , 则称 F 为 函数 对于函数 F , 如果有 xFy , 则记作 y F ( x ), 并称 y 为 F 在 x 的 值 . 例 F 1 {< x 1 , y 1 >,< x 2 , y 2 >,< x 3 , y 2 >…

3 步走,快速上手 API 接口测试

开始 API 接口测试之前&#xff0c;我们需要弄清接口测试的含义&#xff1a; 接口测试就是根据接口清单&#xff0c;模拟客户端向服务端发送请求数据&#xff0c;并获取响应数据后&#xff0c;查看响应数据是否符合预期的过程。 整个过程可以分为三个步骤&#xff1a; 第一步…

Android Termux安装SSH结合内网穿透实现远程SFTP文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

怎么搭建实时渲染云传输服务器

实时渲染云传输技术方案&#xff0c;在数字孪生、虚拟仿真领域使用越来越多&#xff0c;可能很多想使用该技术方案项目还不知道具体该怎么搭建云传输服务器&#xff0c;具体怎么使用实时云渲染平台系统。点量云小芹将对这两个问题做集中分享。 一、实时渲染服务器怎么搭建&…

Git安装及基本操作

1.安装Git 配置用户 git config --global user.name "用户名" git config --global user.email "邮箱"配置完成后查看配置 git config -l生成SSH秘钥 ssh-keygen -t rsa -C “邮箱” 输入完成后需要按3次Enter键 $ ssh-keygen -t rsa -C "邮箱&quo…

第11章 GUI Page436 步骤十 使用wxAutoBufferedPaintDC

注意&#xff0c;窗口构造函数中&#xff0c;一定得有第157行&#xff0c;否则就会报警&#xff08;即使窗口绑定上背景处理函数也不行&#xff09;&#xff1a;

ssh工具 从ssh服务器下载文件夹

此文分享一个python脚本,用于快速的定位、选择ssh服务器上的文件夹,并将其下载到本地指定的位置。 效果演示 🔥完整演示效果 👇 第一步,显然,我们需要选择功能 👇 第二步,确认我们需要从哪个ssh服务器上下载文档 👇 第三步,定位、选择、确认需要下载的文件夹…