design\project\学习 OAuth 读书笔记(一)

news2024/11/18 7:43:21

OAuth(一)

原文链接:OAuth 2.0 tutorial | OAuth flows

目录

    • OAuth(一)
        • 应用场景分析
          • 问题1:代表用户授予有限访问权限
          • OAuth 代表用户授权
          • 问题2:允许第三方应用程序有限的访问API(服务帐户)
      • OAuth2:授权码授权流程
        • 问题提出
        • 1. 授权码授权流程之前,OAuth 接入应用注册
        • 2. 授权码授权流程
          • 前端应用
          • 后端应用
      • OAuth2:授权流程踩雷与附加说明
        • 不要使用应用直接向授权服务器请求令牌
        • 不要使用密码授权
        • 不要使用服务账户授权
        • OAuth2:设备授权流程
        • OAuth2: 客户端授权流程
        • OAuth2:PKCE

OAuth = open authorization framework (开放授权框架)

代表用户或应用程序本身授予第三方对APl的有限访问权限。

OAuth 2.0授权框架使得第三方应用程序能够获得对HTTP服务的有限访问。包括允许代表资源所有者访问权限,和代表第三方应用程序自身获得访问权限。本规范取代并废除了RFC 5849中描述的OAuth 1.0协议。

The OAuth 2.0 authorization framework enables a third-partyapplication to obtain limited access to an HTTP service, either onbehalf of a resource owner by orchestrating an approval interactionand the HTTPrservice, or by allowing thebetween the resource ownerthird-party application toobtain access on its own behalf.Thisspecification replaces and obsoletes the OAuth 1.0 protocol describedin RFC 5849.

应用场景分析

问题1:代表用户授予有限访问权限

give a 3rd party limited access to APl on behalf of the user

栗如:现在某企业管理系统需要将某文件分享到钉钉企业网盘,便于其他外部联系人查看

直接在 opms 中保存 企业钉钉的用户名,密码,获得钉钉的全部权限不是一个好的选择(反模式)

不同系统,有用完全不同的账户体系,如何进行部分授权

OAuth 代表用户授权

图:代表用户授予有限访问权限

问题2:允许第三方应用程序有限的访问API(服务帐户)

give 3rd party limited access to API on behalf of itself (service account)

图:应用程序本身通过服务账户开放有限三方API访问
图:应用程序本身通过服务账户开放有限三方API访问



OAuth2:授权码授权流程

问题提出

从授权服务器获得 Token 的流程是什么 ?

授权码模式就是,无需用户每次都输入用户名和密码,就能从授权服务器获得 Token 的一种机制

1. 授权码授权流程之前,OAuth 接入应用注册

  1. 注册回调 URL
  2. 完善自身资料
    1. 上传 Logo
    2. 添加描述
  3. 获得应用ID(Client Id)
  4. 获得应用密钥(仅当机密客户 only if confidential client)

一般的,如果是 public client 栗如:前端可以通过 f12 查看到源码的 vue 项目,一般不设置应用密钥

如果是后端应用,则一般需要配置应用密钥

因为您可能需要有上百个 OAuth 配置,所以你需要一个应用管理系统来辅助你做应用注册

应用注册

2. 授权码授权流程

前端应用

前端应用授权码授权流程
前端应用授权码授权流程

后端应用

后端应用授权码授权流程
后端应用授权码授权流程



OAuth2:授权流程踩雷与附加说明

由于安全问题(令牌泄漏,例如通过浏览器历史记录或referrer header、令牌注入等)

不再推荐简化版授权流程

简化版授权流程通常没有应用密钥,因为简化版的流程通常用于本地授权或者 SPA 应用之间的授权

不要使用应用直接向授权服务器请求令牌

直接使用授权码当 Token 使用
直接使用授权码当 Token 使用

不要使用密码授权

不要使用密码授权

不要使用服务账户授权

不要使用服务账户授权

OAuth2:设备授权流程

由于设备输入能力有限,通常通过生成简短的授权码 + 双因素 认证的方式授权登录
OAuth2:设备授权流程

OAuth2: 客户端授权流程

OAuth2: 客户端授权流程

OAuth2:PKCE

OAuth授权码的扩展,以防止授权码(AuthorizationCode)注入和窃取。PKCE 最初是为无法对前端应用(公共客户端)开发的。现在建议所有接入应用都启用

为了进一步提升安全性能
OAuth2:PKCE

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

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

相关文章

TPS74525PQWDRVRQ1典型应用TPS62992QRYTRQ1汽车用稳压器 规格参数

TPS74525PQWDRVRQ1线性稳压器 IC 2.5V 500MA 6WSON明佳达电子【概述】TPS745/TPS745-Q1可调节500mA LDO稳压器具有极低的静态电流,并可提供快速的线路和负载瞬态性能。TPS745/TPS745-Q1具有130mV的超低压差(500mA电流),这有助于提…

EEP封装?METS封装?还是ZIP封装?

档案信息化行业的老兵想必对10多年前的EEP封装包印象深刻,其自包含、自描述、自证明的“洋葱结构”曾经火遍大江南北,为电子文件的真实性和完整性保证提供了一种重要手段,但其过分严谨刻板的封装结构也曾让很多档案从业人员抓狂。笔者曾经主导…

Java开发 - 分页查询初体验

前言在上一篇,我们对es进行了深入讲解,相信看过的小伙伴已经能基本掌握es的使用方法,我们知道,es主要针对的是搜索条件,在这方面es具有无可比拟的优势,但我们也会注意到,有时候搜索条件过于宽泛…

基于JavaWeb实现的学生选课系统(源码+数据库+文档)

一、项目简介 本项目是一套基于JavaWeb实现的学生选课系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,e…

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.2版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&…

Nuxt.js项目开发过程遇到的问题以及对Nuxt.js的学习与总结

文章目录📋前言💻Nuxtjs3快速了解🎯nuxtjs是什么?官网是这样介绍它的。🎯关于nuxtjs的SSR开发🧩SSR应用场景🧩nuxtjs的特性💻nuxtjs的初始目录结构🎯关于各个目录的解释&…

智能家居控制系统

🥁作者: 华丞臧. 📕​​​​专栏:【项目经验】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站…

MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE

文章目录1.前台操作2.需求分析2.1调用方式2.2分为两大概括:2.3业务逻辑细节图3.BAPI_GOODSMVT_CREATE4.RFC接口代码5.总结1.前台操作 SAP CO01(创建生产订单)/MIGO(发货投料)前台操作 这里面有migo的前台操作,首先了解前台操作后再去写RFC接口是比较容易理解的.!! 2.需求分析…

opencv读入图片注意事项

来源:投稿 作者:蓬蓬奇 编辑:学姐 深度学习数据预处理中常用opencv读入图片,一般在__getitem__函数中调用。本文主要介绍opencv读取图片的一些细节以及注意事项。本文中使用的图片见第6节“opencv测试使用的图片”。 1.如何通过o…

计算机底层:储存器的性能指标(CPU和内存等硬件的性能以及 对比标准)

计算机底层:储存器的性能指标(CPU和内存等硬件的性能以及 对比标准) 内存: MAR是存放地址的寄存器;MDR是存放数据的寄存器。 MAR是存放地址的寄存器,那么其中的二进制位一定是不能重复的,试想,如果有有两个…

《爆肝整理》保姆级系列教程python接口自动化测试框架(二十六)--批量执行用例 discover(详解)

简介  我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方…

类和对象 - 上

本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 面向过程与面向对象 面向过程的解决方法 面向对象的解决方法 面向对象的优势 类的引入 早期C类的实现 class定义类 class定义规则 类成员的两种定义方式 类的访问限定符及封装 访…

在数字优先的世界中打击知识产权盗窃

在当今数据驱动的世界中,全球许多组织所面临的期望和需求正在达到前所未有的水平。 为了迎接挑战,数据驱动的方法是必要的,需要有效的数字化转型来提高运营效率、简化流程并从遗留技术中获得更多收益。 但是,虽然数字优先方法可…

Spring Boot+Vue前后端分离项目练习01之网盘项目的搭建

1.前期设计 一般看来,网盘系统主要实体包括:用户、存储信息、用户文件、文件、回收文件等基本功能点。 各实体对应的表结构如下所示: 表名:user(用户表) 字段名属性说明userIdbigint主键usernamevarcha…

数据结构与算法系列之顺序表的实现

这里写目录标题顺序表的优缺点:注意事项test.c(动态顺序表)SeqList.hSeqList.c各接口函数功能详解void SLInit(SL* ps);//定义void SLDestory(SL* ps);void SLPrint(SL* ps);void SLPushBack(SL* ps ,SLDataType * x );void SLPopBack(SL* ps…

[busybox] busybox生成一个最精简rootfs(下)

书接上回:[busybox] busybox生成一个最精简rootfs(上) 本篇介绍几个rootfs中用到的“不是那么重要的”几个文件。 9 /etc/shadow 和 /etc/passwd 曾经,/etc/passwd 文件用于存储独立 Linux 系统中的所有登录信息。 后来,由于以下原因&…

算法训练营 day63 单调栈 下一个更大元素II 接雨水

算法训练营 day63 单调栈 下一个更大元素II 接雨水 下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的…

2023软件测试工程师涨薪攻略,3年如何达到30K

1.软件测试如何实现涨薪 首先涨薪并不是从8000涨到9000这种涨薪,而是从8000涨到15K加到25K的涨薪。基本上三年之内就可以实现。 如果我们只是普通的有应届毕业生或者是普通本科那我们就只能从小公司开始慢慢往上走。 有些同学想去做测试,是希望能够日…

Vue3 关于 provide、inject 的用法

前言: 在前端项目中牵扯的最多的莫过于组件之间的传值了,除了最最常用的 props 和 emit,其实在 Vue 中还额外提供了另外几种方法。今天分享一种组件之间通信的方法。 一. 场景再现 先别着急考虑标题这个 api 的含义。在这里我先动手写一个比较…

如何使用Codecepticon对C#、VBA宏和PowerShell源代码进行混淆处理

关于Codecepticon Codecepticon是一款功能强大的代码混淆处理工具,该工具专为红队和紫队渗透测试安全活动而开发,在该工具的帮助下,广大研究人员可以轻松对C#、VBA5/VBA6(宏)和PowerShell源代码进行混淆处理。Codecep…