首页 > 其他分享 >OAuth2 介绍

OAuth2 介绍

时间:2023-11-08 11:22:23浏览次数:27  
标签:令牌 OAuth2 介绍 token 服务器 授权 客户端

OAuth 简介

OAuth 是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源 (如头像、照片、视频等),并且在这个过程中无须将用户名和密码提供给第三方应用。通过令牌 (token) 可以实现这一功能。

每一个令牌授权一个特定的网站在特定的时间段内允许可访问特定的资源。OAuth 让用户可以授权第三方网站灵活访问它们存储在另外一些资源服务器上的特定信息,而非所有的内容。对于用户而言,我们在互联网应用中最常见的 OAuth 应用就是各种第三方登录,例如 QQ授权登录、微信授权登录、微博授权登录、GitHub 授权登录等。

例如用户想登录 Ruby China ,传统方式是使用用户名和密码但是这样并不安全,因为网站会存储你的用户名密码,这样可能会导致密码泄露。这种授权方式安全隐患很大如果使用 OAuth 协议就能很好地解决这一问题。

oAuth2协议解决了多个网站登录问题,账号密码不安全的问题,比如一些小众的网站就可以不用注册登录,使用 oAuth2,也就是通过第三方向要访问的网站发送请求获取Token,第三方网站每次请求写到Token就可以访问到内容。

注意:OAuth2 是 OAuth 协议的下一个版本,但不兼容 OAth 1.0 ,OAth2 关注客户端开发者的简易性,同时为 Web 应用、桌面应用、移动设备、 IOT 设备提供专门的认证流程

oAuth2 就是对用户的信息进步的保护,如很多喜欢将所有密码设置为同样的,就可能会泄露,但是通过已经注册过的网站用户信息,来进行授权给第三方网站信息进行登录则免去了注册,oAuth主要做的就是认证保护用户隐私安全

OAuth2 授权总体流程

  • (A) 用户打开客户端以后,客户端要求用户给予授权
  • (B) 用户同意给予客户端授权
  • (C) 客户端使用上一步获得的授权,向认证服务器申请令牌
  • (D) 认证服务器对用户端进行认证以后,确认无误,同意发放令牌
  • (E) 客户端使用令牌,向资源服务器申请资源
  • (F) 资源服务器确认令牌无误,同意向客户端开放资源

从上图中我们可以看出六个步骤之中,B是关键,即用户怎么才能给于客户端授权。同时会发现 OAuth2 中包含四种不同角色:

  • Client :第三方应用。
  • Resource Owner:资源所有者
  • Authorizetion Server :授权服务器
  • Resource Server :资源服务器

注意:授权服务器和资源服务器可以放一起,但是在如今的互联网和分布的推动下,都是分别存储

OAuth2 四种授权模式

OAuth2 协议一种支持四种不同的授权模式:

授权码模式

授权码模式(Authorization Code ) 是功能最完整,流程最严密、最全并且使用最广泛的一种 OAuth2 授权模式。同时也是最复杂的一种授权模式,它的特点就是通过客户端的后台服务器,与服务器提供商的认证服务器进行交互。

常见的第三方平台登录功能基本都是使用这种模式。(安全性高)

其具体授权流程如下:

简化模式

简化模式是不需要第三方服务端(客户端)参与,直接在浏览器中向授权服务器申请令牌(token),如果网站是纯静态页面,则可以采用这种方式。

密码模式

密码模式是用户把用户名/密码直接告诉客户端,客户端使用在这些信息项授权服务器申请令牌(token)。这需要用户对客户端高度信任,例如客户端应用和服务器提供商就是同一家公司。

客户端模式

客户端模式是指客户端使用自己的名义而不是用户的名义向授权服务器提供申请授权。严格来说,客户端模式并不能算作 OAuth 协议解决问题的一种解决方案,但是对于开发者而言,在一些为移动端提供的授权服务器上使用这种模式还是非常方便的。

OAuth2 标准接口

/oauth/authorize:授权端点 ,固定授权入口路径 ,也是授权服务器的用户允许授权的页面
/oauth/token :获取令牌端点
/oauth/confirm_access:用户确认授权提交端点
/oauth/error:授权服务错误信息端点
/oauth/check_token:用于资源服务访问的令牌解析端点
/oauth/token_key:提供公有密钥的端点,如果使用 JWT 令牌的话
以上是规范化固定接口 ,端口就是路径

OAuth2 整合微服务架构

SpringCloud + Gateway + Security 搭建微服务统一认证授权(附源码)_java

  • 网关微服务:作为资源服务器
  • 授权认证微服务:作为认证服务器

用户不能直接去访问资源服务器(网关),必须先到认证服务器认证,通过后颁发一个token令牌给你,你只有拿着token访问资源服务器才能通过,令牌token是有时间限制的,到时间了就无效。

其中网关为什么能作为“资源服务器”呢? 网关是作为各个微服务(会员服务、商品服务、订单服务等)统一入口,也就是这些资源服务的统一门面,在这里可以对JWT验签、JWT有效期判断、JWT携带角色权限判断。

OAuth2 和 JWT关系
  • OAuth2 是一种认证授权的协议规范
  • JWT 是基于 token 的安全认证协议的实现

OAuth2 的认证服务器签发的 token 可以使用 JWT 实现,JWT轻量且安全。

标签:令牌,OAuth2,介绍,token,服务器,授权,客户端
From: https://www.cnblogs.com/binbingg/p/17816981.html

相关文章

  • Seata分布式事务框架-AT模式与TCC模式介绍
    SeataAT事务方案Seata的AT模式(AutomaticTransaction)是一种无侵入的分布式事务解决方案。下面结合具体业务场景来分析其执行的原理。业务场景订单系统当用户下订单时,执行以下三步流程:订单系统保存订单订单系统调用库存服务,减少商品库存订单系统调用账户服务,扣减用户金额......
  • AR眼镜芯片解决方案|AR智能眼镜安卓主板硬件方案介绍
    近年来,随着增强现实(AR)技术的逐渐成熟,AR眼镜芯片解决方案采用了MT8788芯片。AR技术可以帮助开发者构建一个复杂而实用的混合现实世界,既有虚拟世界的强大功能,又能与真实世界相结合。据了解,MT8788是一款多芯片分布式处理系统,旨在在性能、功耗和尺寸之间取得平衡。这意味着该......
  • 先进的文档处理技术——Apryse介绍
    为开发人员提供先进的文档处理技术我们的SDK、预构建组件和用户SaaS应用程序使世界先进的公司能够在其应用程序和工作流程中轻松生成、转换、查看、编辑和签署文档。无论您是希望将文档处理功能集成到您的软件中、简化内部工作流程、增强文档审阅,还是在您的企业内协作、编辑......
  • matlab程序性能优化与混合编程技术介绍
    matlab程序代码优化,性能优化 Matlab是一种强大的计算工具,方便的矩阵运算与工具箱为编程人员提供了极大的便利。但是其性能的缺失使得处理一些大计算量问题时显得效率不高,matlab程序的优化应从几个方面展开:1.矩阵提前分配空间,矩阵第一次使用之后避免改变矩阵的维数。2.尽量使用矩......
  • Go 接口-契约介绍
    Go接口-契约介绍目录Go接口-契约介绍一、接口基本介绍1.1接口类型介绍1.2为什么要使用接口1.3面向接口编程1.4接口的定义二、空接口2.1空接口的定义2.2空接口的应用2.2.1空接口作为函数的参数2.2.2空接口作为map的值2.3接口类型变量2.4类型断言三、尽量定义“小接口......
  • ai换脸可以突破人脸识别吗?,详细的介绍!
    AI换脸技术,通常被称为深度伪造(deepfake)技术,是使用人工智能算法,特别是深度学习的方法,如卷积神经网络(CNN)或生成对抗网络(GAN),来替换视频或图像中人物的脸部的技术。这种技术可以创建非常逼真的视频或图片,以至于肉眼很难辨别真伪。在讨论AI换脸能否突破人脸识别之前,我们首先需要理解人......
  • 网卡介绍篇
    网卡介绍篇1.什么是网卡?网卡是计算机与局域网互连的设备网卡,又称为网络适配器或网络接口卡NIC(NetworkinterfaceCard),是构成计算机网络系统中最基本的、最重要的和必不可少的连接设备,计算机主要通过网卡接入网络.网卡历史:上世纪80年代末期,国外微机界已经预测,90年代......
  • Redis Functions 介绍之一
    Redis提供了编程接口(programminginterface)可以让你在Redis服务器端执行客户的脚本。一个重大的变化就是从Redis7开始,你可以选择使用RedisFunctions去管理和运行你的脚本,而在此之前你只能使用EVAL命令执行Lua脚本。通过EVAL命令执行的脚本是有缺陷的。如果在Redis服务器端执行......
  • Redis Functions 介绍之一
    Redis提供了编程接口(programminginterface)可以让你在Redis服务器端执行客户的脚本。一个重大的变化就是从Redis7开始,你可以选择使用RedisFunctions去管理和运行你的脚本,而在此之前你只能使用EVAL命令执行Lua脚本。通过EVAL命令执行的脚本是有缺陷的。如果在Redis服务器端执......
  • (五)Python之PVM介绍
    PVM介绍PVM(pythonvirtualmachine)Python解释器执行Python代码的时候,经历如下几个阶段:1)加载代码文件2)翻译成AST(语法分析所获得的中间结果)3)生成bytecode4)在PVM(pythonvirtualmachine)上执行byecode,PVM实际是一个基于栈的虚拟机......