什么是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,一经查实,立即删除!

相关文章

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:…

在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;支持我们在一…

Nginx安装与文件服务器实现

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

tensorboard可视化——No dashboards are active for the current data set.

No dashboards are active for the current data set. 出现问题的原因是事件的路径未用绝对路径&#xff0c;tensorboard --logdir./runs --port6007 改为tensorboard --logdirD:\Code\Python\Study\CL\hat-master\hat-master\run s\one --port6007就好了

acwing linux docker教程

终章 听着名字还挺伤感的哈哈哈其实是Linux的终章&#xff0c;感谢大家这段时间的阅读&#xff0c;这段使时间我为了给大家清楚的讲解一下Linux自己也是很认真的学习了一遍&#xff0c;自己提升了也不少。其实最近学校里面是讲了Linux和windows server 2019搭载DNS、web、ftp服…

[渗透测试学习] Manager - HackTheBox

文章目录 信息搜集 nmap扫描一下端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.236扫出来很多端口&#xff0c;其中80端口有http服务&#xff0c;88端口是采用一个身份验证协议kerberos&#xff0c;以及NetBIOS-SSN&#xff08;端口139&#xff09;和Microsoft-DS&#…

探索前端构建可视化应用的思路

一、前言 前端社区里&#xff0c;低代码/无代码是被讨论的火热赛道。简单来说低代码就是通过编写少量代码的方式完成应用的开发及上线&#xff0c;而无代码是低代码的子集&#xff0c;不需要编写代码通过配置的方式即可完成整个应用的开发。目前集团内部的低代码平台已经有很多…

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

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

Linux上iPortal 配置80端口的http

作者&#xff1a;yx 文章目录 前言方法一、配置使用外置ES1、关闭启用 iPortal 内置的 ES2、修改80端口3、启动外置ES4、启动iPortal5、结果验证 方法二、更改 Linux 系统配置1. 安装 Authbind2. 启用端口的读取和执行权限3. 在 Apache Tomcat 上启用 Authbind4. 重启iPortal5.…

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

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