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完成资源加载。

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

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

相关文章

Kotlin HashMap entries.filter过滤forEach

Kotlin HashMap entries.filter过滤forEach fun main(args: Array<String>) {val hashMap HashMap<String, Int>()hashMap["a"] 1hashMap["b"] 2hashMap["c"] 3println(hashMap)hashMap.entries.filter {println("filter $…

【MongoDB】索引 – 文本索引(指定语言)

一、语言列表 语言名称 代码 danish da dutch nl english en finnish fi french fr german de hungarian hu italian it norwegian nb portuguese pt romanian ro russian ru spanish es swedish sv turkish tr 二、指定默认语言 创建文本索…

UseGalaxy.cn生信云平台文本文件操作手册

文本文件是生物信息学中应用非常广泛的文本格式&#xff0c;甚至可以说是最重要的文件格式&#xff0c;比如常见的测序下机数据Fastq、参考基因组保存格式Fasta、比对文件SAM&#xff0c;以及突变列表VCF&#xff0c;它们都是文本文件。熟练地进行文本文件的处理&#xff0c;对…

upload-labs-1

文章目录 Pass-01 Pass-01 先上传一个正常的图片&#xff0c;查看返回结果&#xff0c;结果中带有文件上传路径&#xff0c;可以进行利用&#xff1a; 上传一个恶意的webshell&#xff0c;里面写入一句话木马&#xff1a; <?php eval($_POST[cmd]); echo "hello&quo…

【单片机】初次实验:Keil51的使用

哔哩哔哩/CSDN/博客园&#xff1a;萌狼蓝天 延时器 delay(int count){int i,j;for(i0;i<count;i){for(j0;j<1000;j);} } 瞧一瞧 题目要求&#xff1a;P0口接八个发光二极管&#xff0c;先让后面四个灯亮&#xff0c;再让前面四个灯亮&#xff0c;循坏 # include <REGX…

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据数据显示&#xff0c;9月份&#xff0c;京东平台投影机的销量为13万&#xff0c;环比下滑约17%&#xff0c;同比下滑约25%&#xff1b;销售额将近2.6亿&#xff0c;环比下…

eNsp下如何使用wireshark抓包

文章目录 拓扑图抓包操作 拓扑图 抓包操作 可以通过下图上的指示 来设置 Time列的显示样式。 这里有个缺点就是就是抓取ensp上的虚拟设备上的数据包时的&#xff0c;年月日时间显示的不对。暂时无解决办法。 一般选择 日期和时间&#xff08;日期和时间与当前标准时间对应上时…

程序员找副业有哪几个方向(纯干货)

前序 关于副业对于我自己的看法一般会先从自身的职业去拓展&#xff0c;毕竟自己所在的行业自己会更清楚有哪些资源去获取&#xff0c;那么首先我们可以先问万能的gpt我们程序员做副业有哪些实用的推荐&#xff0c;看看它怎么说的 外包网站接单&#xff1f; 每次大家提到程序…

python循环队列

导语&#xff1a; 队列是一种先进先出&#xff08;first in first out,FIFO&#xff09;的线性表&#xff0c;是一种常用的数据结构。 它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#…

C语言——计算1!+2!+3!+......+10!

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int n;int ret 1;int sum 0;for(n 1; n < 10; n){ret * n;sum sum ret;}printf("sum %d\n",sum);return 0; }

C++基础——类与对象

1 概述 C是面向对象的语言&#xff0c;面向对象语言三大特性&#xff1a;封装、继承、多态。 C将万事万物抽象为对象&#xff0c;对象上有其属性和行为。 2 封装 2.1 封装的意义 封装是面向对象的三大特性之一&#xff0c;封装将属性和行为作为一个整体&#xff0c;对属性和…

接口自动化面试题

1.http请求都包含哪些内容&#xff0c;请求头和请求体有哪些内容 请求行/请求头/请求体/空行 请求行&#xff1a;请求方法字段、URL字段、http协议版本 例如&#xff1a;GET /index.html HTTP/1.1 请求方法&#xff1a;GET、POST、PUT、DELETE、OPTIONS、TRACE、CO…

2007-2022年全国各地级市金融机构网点数据

2007-2022年地级市金融机构网点数据 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;行政区划代码、年份、城市名称、所属省份、银行网点数量、其中-政策性银行及国家开发银行营业网点占比、其中-商业银行营业网点数量占比、其中-农村金融机构营业网点数量占比 3、范围…

20.8 OpenSSL 套接字SSL传输文件

有了上面的基础那么传输文件的实现就变得简单了&#xff0c;在传输时通常我们需要打开文件&#xff0c;并每次读入1024个字节的数据包&#xff0c;通过SSL加密传输即可&#xff0c;此处的文件传输功能在原生套接字章节中也进行过详细讲解&#xff0c;此处我们还是使用原来的密钥…

Excel 转 Json 、Node.js实现(应用场景:i18n国际化)

创作灵感来源于在线转换是按照换行符去转换excel内容换行符后很难处理 本文是按单元格转换 const xlsx require(node-xlsx) const fs require(fs) const xlsxData xlsx.parse(./demo.xlsx) // 需要转换的excel文件// 数据处理 方便粘贴复制 const data xlsxData[2].data …

Hello Vue!

目录 前言 hello vue 为什么要new Vue(),而不能直接调用Vue()? Vue构造函数中的形参options template配置项 $mount()方法 前言 从此篇博客开始&#xff0c;将开启vue的学习&#xff0c;查缺补漏。 只要学计算机语言&#xff0c;那么hello xxx那一定是入门第一行代码了…

CSS 链接、列表、表格、盒子模型

一、CSS链接: 不同的链接可以由不同的样式。链接的样式可以用任何CSS属性&#xff08;比如颜色、字体、背景等&#xff09;。 链接的四种状态&#xff1a; a.link&#xff1a;正常&#xff0c;未访问过的链接&#xff1b; a.visited&#xff1a;用户已访问过的链接&#xf…

什么是CE认证?蓝牙耳机出口欧盟CE认证如何办理?CE-RED认证办理

蓝牙耳机是一种基于蓝牙技术的一种小型设备&#xff0c;只需要把这种轻巧的设备藏在耳机边而不需要直接使用通讯设备&#xff08;手机、电脑等&#xff09;就可以实现自由通话。蓝牙耳机就是将蓝牙技术应用在免持耳机上&#xff0c;让使用者可以免除恼人电线的牵绊&#xff0c;…

C++:类和对象(下)

1.再谈构造函数&#xff1a; 构造函数体赋值&#xff1a; 回顾&#xff1a;在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day d…

如何避免JavaScript中的内存泄漏?

前言 过去&#xff0c;我们浏览静态网站时无须过多关注内存管理&#xff0c;因为加载新页面时&#xff0c;之前的页面信息会从内存中删除。 然而&#xff0c;随着单页Web应用&#xff08;SPA&#xff09;的兴起&#xff0c;应用程序消耗的内存越来越多&#xff0c;这不仅会降低…