OAuth 2.0实现统一认证

OAuth 2.0协议概念:

OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 2.0(开放授权)是一个认证框架,它允许应用程序访问您在其他应用程序上存储的个人信息,而无需共享您的密码。它是一种安全、简单、灵活的解决方案,已成为许多网站和服务使用身份验证和授权的开放标准。

OAuth2 协议主要角色:
  1. 资源所有者 (Resource Owner):资源所有者是指拥有受保护资源的用户,即数据或服务的真正拥有者。资源所有者通过授权将访问权限委派给客户端。
  2. 客户端 (Client):客户端是指请求访问受保护资源的应用程序、网站或设备。它可以是第三方应用、移动应用、桌面应用等。
  3. 授权服务器 (Authorization Server):也称为认证服务器,授权服务器负责认证资源所有者,并颁发访问令牌给客户端。它验证客户端的身份和授权请求,并提供资源所有者进行授权的界面。
  4. 资源服务器 (Resource Server):资源服务器存储和管理受保护的资源。它接收来自客户端的访问请求,并根据访问令牌的有效性来判断是否授权访问资源。
  5. 授权许可 (Authorization Grant):授权许可是资源所有者授权给客户端访问受保护资源的凭证。OAuth2定义了多种授权许可类型,如授权码、简化授权、密码授权和客户端凭证等。
  6. 访问令牌 (Access Token):访问令牌是由授权服务器颁发给客户端的凭证,表示客户端被授权访问受保护资源的权限。客户端使用访问令牌来请求资源服务器获取受保护资源。
  7. 刷新令牌 (Refresh Token):刷新令牌是可选的,用于在访问令牌过期后获取新的访问令牌。客户端可以使用刷新令牌向授权服务器请求刷新访问令牌,以延长访问权限的有效期。

OAuth 2.0实现统一认证流程

假如我们是一个前后端分离的项目

前端地址:192.168.0.1

后端地址192.168.0.2

统一认证地址192.168.0.3

在我们这个前后端分离的项目中具体流程如下:

1.用户在客户端(浏览器)输入想要访问的资源URL,比如192.168.0.1:8080/page

2.因为没有任何授权,前端就会将请求重定向到统一认证的地址上,并拼接上redirectUri和appId,secrit等字段

http://192.168.0.3:9000/onecity-bc-login/?returnUrl=/onecity/bc/boss/oauth2.0/authorize?redirectUri=http:192.68.0.1:8080/login&appId=xasf_yw_wy

3.用户在统一认证的地址上输入账号密码,通过认证后,认证服务器生成code,然后统一认证服务就会重定向到上面路径的redurectUri—192.68.0.1:8080/login路径并拼接刚刚生成的code

http://192.168.0.1:8080/login?code=33635289265

4.此时我们的前端服务已经获取到了code,前端服务拿这个code请求后端服务的getToken接口,后端的gettoken接口收到code后会调用方法请求统一认证的getToken服务接口,token认证成功后,此时后端会把token存储起来,并把token作为前端的请求的response给前端

5.此时前端服务已经接收到了token,前端token会将token保存起来,并保存在浏览器的cookie中。之后前端加载用户首次输入的访问地址,完成资源加载。

6.在首次认证完成后,token时效内,我们每次访问资源都会携带token完成资源加载。

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

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

相关文章

​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】 课本里章节里所有蓝色字体的思维导图

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 ,该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…

香港高才通计划申请条件、通过率、百强大学名单以及好处分析!

香港高才通计划申请条件、通过率、百强大学名单以及好处分析! 香港高端人才通行证计划简称香港高才通计划,是香港于2022年年底推出的一项人才引进计划。 目的是吸引世界各地具备丰富工作经验及高学历的高端人才到香港探索机遇,高端人才包括高…

【milkv】添加LCD屏GC9306

前言 本章介绍如何添加LCD屏GC9306驱动。 电路图 dts build\boards\cv180x\cv1800b_milkv_duo_sd\dts_riscv\cv1800b_milkv_duo_sd.dts &spi2 {status "okay";/delete-node/ spidev0;gc9306: gc93060{compatible "sitronix,gc9306";reg <0&g…

成集云 | 英克对接零售O2O+线上商城 | 解决方案

方案介绍 零售O2O线上商城是一种新型的商业模式&#xff0c;它通过线上和线下的融合&#xff0c;提供更加便捷的购物体验。其中&#xff0c;O2O指的是线上与线下的结合&#xff0c;通过互联网平台与实体店面的结合&#xff0c;实现线上线下的互动和协同。线上商城则是指通过互…

selenium自动化测试入门 —— 键盘鼠标事件ActionChains

在使用 Selenium WebDriver 做自动化测试的时候&#xff0c;会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作&#xff1b;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在 WebDeriver 中&#xff0c;有一个专门的类来负责实现这些测试场…

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

centos 7.9系统安装老版本jenkins,并解决插件问题

1.初衷 因为jenkins随着时间推移&#xff0c;其版本也越来越新&#xff0c;支持它运行的JDK也越来越新。基于不折腾的目标&#xff0c;我们安装一个老的固定版本就行。以前安装新版本&#xff0c;经常碰到的问题就是插件安装不兼容的问题。现在这个问题&#xff0c;可以把以前…

Python算法例8 将整数A转换为B

1. 问题描述 给定整数A和B&#xff0c;求出将整数A转换为B&#xff0c;需要改变bit的位数。 2. 问题示例 把31转换为14&#xff0c;需要改变2个bit位&#xff0c;即&#xff1a;&#xff08;31&#xff09;10&#xff08;11111&#xff09;2&#xff0c;&#xff08;14&…

SpringBoot系列之集成Redission入门与实践教程

Redisson是一款基于java开发的开源项目&#xff0c;提供了很多企业级实践&#xff0c;比如分布式锁、消息队列、异步执行等功能。本文基于Springboot2版本集成redisson-spring-boot-starter实现redisson的基本应用 软件环境&#xff1a; JDK 1.8 SpringBoot 2.2.1 Maven 3.2…

11 抽象向量空间

抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头&#xff0c;可以是一组实数&#xff0c;即一个坐标对。 箭头在高维&#xff08;4维&#xff0c;甚至更高&#xff09;空间&…

【FI】FB02中Coding Block字段如何设置为可修改

本文基于S/4 HANA 2022 关于FB02下会计凭证行上的可更改字段的控制&#xff0c;以前以为只受“凭证明细行更变规则”&#xff08;OB32&#xff09;的影响。 今天碰到了Coding Block字段的情况&#xff0c;它不受OB32的影响&#xff0c;而是受表TCOBX控制。 如何确认该字段是Cod…