什么是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. 访问资源:客户端使用获得的访问令牌去访问资源服务器上的受保护资源。

 

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

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

相关文章

ssh远程执行命令卡住 使用vim、vi、cat等命令,或者在执行shell脚本时,都会莫名的卡住

最大传输单元 (MTU) 是网络层协议(如 TCP)支持的最大数据包的大小(以字节为单位),标头和数据均包括在内。 通过IPsec隧道发送的网络数据包经过加密,然后封装在外部数据包中,以便进行路由。因为…

WiFi通信协议

一、引言 随着无线通信技术的飞速发展,WiFi协议已经成为现代生活中不可或缺的一部分。WiFi协议,全称为无线保真技术,是一种允许电子设备通过无线方式连接到互联网的技术标准。本文将深入探讨WiFi协议通信的工作原理、特点以及应用场景。 二、…

Netty组件基础

Netty入门简介 netty是一个异步、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。 Netty优势 Netty解决了TCP传输问题,如黏包、半包问题,解决了epoll空轮询导致CPU100%的问题。并且Netty对API进行增强&#xf…

taro小程序指定@代表

1.ts.config.json "paths": {"/*": ["./src/*"] } config/index.js const path require(path) alias: {: path.resolve(__dirname, .., src) },

Codeforces Round 917 (Div. 2)(A~D)

A - Least Product Solution 观察发现&#xff0c;对于 a i < 0 a_i<0 ai​<0&#xff0c;操作后 a i a_i ai​ 不会变得更小&#xff0c; a i > 0 a_i>0 ai​>0&#xff0c;操作后 a i a_i ai​ 不会变得更大。所以&#xff0c;当 ∏ i 1 n a i ≥ 0…

Python如何将图片转换成字符

PIL(Python Image Library)库是Python平台上一个功能强大的图像处理标准库&#xff0c;支持图像的存储、显示和处理&#xff0c;几乎可以处理所有图片格式&#xff0c;如图像的压缩、裁剪、叠加、添加文字等等。 安装PIL库:pip install pillow from PIL import Image ascii_cha…

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

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

【Java中创建对象的方式有哪些?】

✅Java中创建对象的方式有哪些&#xff1f; ✅使用New关键字✅使用反射机制✅使用clone方法✅使用反序列化✅使用方法句柄✅ 使用Unsafe分配内存 ✅使用New关键字 这是我们最常见的也是最简单的创建对象的方式&#xff0c;通过这种方式我们还可以调用任意的构造函数 (无参的和有…

mybatis的二级缓存使用以及禁用

目录 mybatis 二级缓存配置有两处 全局设置 mapper 设置 测试代码 执行结果 源码执行逻辑 创建 SqlSession 二级缓存配置是否添加 解析 cache 标签 XMLMapperBuilder MapperBuilderAssistant CacheBuilder PerpetualCache SerializedCache LoggingCache 将 cach…

Grafana二进制部署并配置prometheus数据源

1、获取grafna二进制安装包 https://grafana.com/grafana/download?pggraf&plcmtdeploy-box-1 grafana官网下载地址 [rootambari-hadoop1 ~]# cd /opt/module/grafana/ [rootambari-hadoop1 grafana]# pwd /opt/module/grafana2、在安装自己的安装目录执行 wget https:…

【C Primer Plus第六版 学习笔记】第十三章 文件输入/输出

有基础&#xff0c;进阶用&#xff0c;个人查漏补缺 文件&#xff1a;在磁盘或固态硬盘上的一段已命名的存储区。C把文件看作是一系列连续的字节所有文件的内容都以二进制形式&#xff08;0或1&#xff09;储存。 文本文件&#xff1a;文件最初使用二进制编码的字符表示文本&a…

在killercoda中的一次apiserver异常追查思路

笔者&#xff1a; 最近在准备cks考试&#xff0c; 然后又发现了killercoda这个能够提供模拟考试环境的平台。它提供了很棒的引导&#xff0c;教你一步步追查问题&#xff0c;形成一整套追查思路&#xff0c;我觉得很不错&#xff0c;特此分享。 准备工作 首先还是需要养成配置…

spark:RDD编程(Python版)

RDD运行原理 RDD设计背景 许多选代目前的MapReduce框架都是把中间结果写入到稳定存储 (比如磁盘)中带来了大量的数据复制、磁盘IO和序列化开销 RDD就是为了满足这种需求而出现的&#xff0c;它提供了一个抽象的数据架构&#xff0c;我们不必担心底层数据的分布式特性&#xf…

useRef语法讲解

useRef useRef 用法 import { useRef, useState } from react import ./App.cssfunction App() {const userRef useRef<HTMLInputElement>(null)const [val, setVal] useState()const handleClick () > {userRef.current?.focus()setVal(userRef.current?.valu…

windows中python3创建虚拟环境

当我们在创建一个python项目时&#xff0c;经常需要安装一堆库&#xff0c;然后转到另一个项目&#xff0c;却发现依赖冲突了&#xff0c;人都麻了。所以创建虚拟环境就是解决这个大麻烦的。 什么是虚拟环境&#xff1f; 虚拟环境是Python的一个工具&#xff0c;支持我们在一…

【cesium-2】Cesium相机系统

相机系统有setView、flyTo、lookAt、viewBoundingsphere等方法&#xff0c;下面是相关的使用方法。 flyTo具有空中飞行逐步切换视域的效果&#xff0c;还可设置飞行时间&#xff1b; setView方法可直接切换相机视口&#xff0c;从而不需要通过一个飞入的效果切换&#xff1b; l…

C/C++不同整数类型的区别

在C/C中涉及的整数相关的类型大致有如下几种&#xff1a; char、unsigned charshort、unsigned shortint、unsigned intlong、unsigned longlong long、unsigned long longint8_t、uint8_tint32_t、uint32_tint64_t、uint64_tDWORDDWORD32、DWORD64size_t、ssize_tSIZE_T、SSI…

Docker Swarm部署实操

大家好&#xff0c;我是升仔 引言 Docker Swarm 是 Docker 官方的集群管理工具&#xff0c;它将多个 Docker 主机转换为一个虚拟的 Docker 主机。Swarm 提供了容器编排、集群管理、服务发现等功能&#xff0c;非常适合生产环境的需要。 部署步骤 环境准备 准备至少三台安装了 D…

Nginx安装与文件服务器实现

1. 概述 Nginx是一个高性能的反向代理和web服务器软件&#xff0c;特点是系统资源消耗低、高性能、高并发、扩展性好。一个进程可以处理多个请求&#xff0c;并且是非阻塞式响应。 windows安装安装包下载地址&#xff1a;https://nginx.org/en/download.html下载之后解压运行n…

Python爬虫---解析---JSONPath

Xpath可以解析本地文件和服务器响应的文件&#xff0c;JSONPath只能解析本地文件 1. 安装jsonpath&#xff1a;pip install jsonpath 注意&#xff1a;需要安装在python解释器相同的位置,例如&#xff1a;D:\Program Files\Python3.11.4\Scripts 2. 使用步骤 2.1 导入&…