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

news2024/11/27 18:40:01

OAuth(二)

原文链接:OAuth 2.0 tutorial | OAuth flows

本文假设您已经看过 OAuth(一)

目录

    • OAuth(二)
      • OpenId Connect
      • OAuth2:令牌自检(Token Introspection)
          • 非结构化 Token 必须进行令牌自检
          • 结构化 Token,对安全要求不高,资源服务器可以本地自检
      • OAuth2:令牌撤销(RFC 7009)
      • OAuth2:JWT 概述
      • OAuth2:授权请求推送(RFC 9126)
      • OAuth2:资源标识(RFC 8707)
      • OAuth2:动态客户端注册(RFC 7591)
      • OAuth2.0:TLS 与 Bearer token
          • TLS

OpenId Connect

OpenlD Connect 1.0 是 OAuth 2.0 协议之上的一个简单身份层 (simple identity layer)。它使客户端能够基于授权服务器验证用户身份,并以交互式 REST-API 的方式暴露用户的基本信息

OpenlD Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It enables Clients to verifythe identity of the End-User based on the authentication performed by an Authorization Server, as well asto obtain basic profile information about the End-User in an interoperable and REST-like manner.

OAuth 授权码流程可用于,验证 用户 和 客户端 之间身份信息交换

OAuth authorization code grant can be used to approve an approval flow between the resource owner and the client

OpenId Connect 获得用户 Email

图:通过 OpenId Connect 协议额外获得用户 Email 用于注册

OAuth2:令牌自检(Token Introspection)

令牌自检:定义了一种协议:

授权的受保护的“资源服务器”向授权服务器发送查询请求,得到 OAuth2.0 给定令牌的状态。包括令牌当前是否处于活动状态、令牌具有哪些访问权限以及令牌的授权上下文。

[…] defines a protocol that allows authorized protected resources to query the authorization server to determinethe set of metadata for a given token that was presented to them byan OAuth2.0 client.

This metadata includes whether or not the tokenis currently active […],what rights of access the token carries […]and the authorization context in which the tokenwas granted […]

令牌可以是一些随机的字符串,也可以是结构化的 JWT 令牌。如果令牌只是一个随机字符串,则需要做令牌自检。

假设我们不使用 JWT Token,当用户使用 opaque Token (非结构化 Token) 向资源服务器发送请求时,资源服务器需要向 认证服务器 发起解析 Token 请求。获得 token 的具体信息。

非结构化 Token 必须进行令牌自检

非结构化 Token 必须进行令牌自检

结构化 Token,对安全要求不高,资源服务器可以本地自检

对安全要求不高,资源服务器可以本地自检

OAuth2:令牌撤销(RFC 7009)

令牌撤销为OAuth授权服务器提出了一个额外的端点,它允许客户端(通过一种安全的方式)通知授权服务器不再需要以前获得的刷新或访问令牌。

proposes an additional endpoint for OAuth authorizationservers,which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed.

如果你向 授权服务器 发送请求 撤销 刷新令牌,那么和这个刷新令牌绑定的 访问令牌很可能也会跟着失效。视具体的授权服务器和其配置决定。

OAuth2:JWT 概述

JWT:为了提升授权的安全性。
Redirect 参数加密

GET /authorize?client_id=abc123&response_type=code&state=abc&redirect_url=<registered-redirect-url>&...

通过 JWT 加密成为

GET /authorize?client_id=abc123&request=jwt

OAuth2:授权请求推送(RFC 9126)

JWT
将参数提前发送给授权服务器,叫做授权请求推送。
授权请求推送流程
图:授权请求推送流程

OAuth2:资源标识(RFC 8707)

为了防止 两个完全不相干的系统之间 资源标识 相同,造成权限污染,我们在通过授权码换取 token 时额外引入了 resource uri 的概念

PS 博主个人理解: 通过 resource
栗如限定,该 Token 只对 项目1 生效
栗如限定,该 Token 只对 租户1 生效

{
  grant_type: 'authorization_code&code=abc',
  client_id: 'xxx',
  resource=https://rs1.example.com
}
// jwt 中的 aud 代表了 resource 生效范围
{
  {
    "alg": "ES256"
  },
  {
  	// iss = 一般标识客户端ID
    "iss": "https://authorization-server.com",
    // aud = token 的预期接收者
    "aud": "https://rs1.example.com"
  },
  {signature}
}

OAuth2:动态客户端注册(RFC 7591)

客户端动态注册

OAuth2.0:TLS 与 Bearer token

httpHead 中的 Authorization: Bearer 是什么意思:

token 就像是 钱,谁捡到了,都能去商店里头买东西。Bearer token 就是使用 一个使用了 私钥+公钥,只有你能解密出的 token。
以此来证明这是你的钱(路上大风刮来的)。而不是路上捡的。

TLS

客户端 双向-tls 认证和令牌绑定证书(RFC8705)

Oauth 2.0 Mutual-tls Client Authentication and Certificate-boundAccess Tokens ( RFC8705)

看不懂,用于高度安全领域,反正就是两边都有自己的公钥私钥,相互验证

博主个人猜测,应该是在应用注册的是,颁发一些公钥、私钥对之类的,然后对 token 进行 hash,和 token 一起传递,接收方验证 hash 结果一致时,才接收这个 token 之类的(┭┮﹏┭┮ 此处 Harker 的眼泪)

{
  "alg": "RS256"
},
{
  "iss": "xxx",
  "cnf": {
    // 可能就是这玩意儿,用 hash 加解密,进行一次公钥 握手呗
    "x5t#S256": "<base64url-encoded SHA256 hash of DER encoded X509 certificate>"
  }
}

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

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

相关文章

Qt std :: bad_alloc

文章目录摘要问题出现原因第一种 请求内存多余系统可提供内存第二种 地址空间过于分散&#xff0c;无法满足大块连续内存的请求第三种 堆管理数据结构损坏稍微总结下没想到还能更新参考关键字&#xff1a; std、 bad、 alloc、 OOM、 异常退出摘要 今天又是被BUG统治的一天&a…

fengMap 自定义dom 偏离实际位置;缩放时飘出地图所在区域

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.前人写了一份代码&#xff0c;很奇怪。使用 new fengmap.FMCompositeMarker添加的复合覆盖物位置是正常的&#xff0c;缩放的时候也是正常的&#xff0c;仍然处于地图内部&#xff1b;但是new fengmap.FMDomMarker添加…

Nginx 负载均衡服务失败场景

nginx可以配置负载均衡&#xff0c;我们可以通过配置实现nginx负载均衡。这里部署了两个服务producter-one和producter-one2。 upstream proxyproducter-one {server producter-one:8080 weight1;server producter-one2:8080 weight1;}# 访问其他服务server {listen 9090…

Netty学习(三):Netty线程模型

〇、前言网络编程的基本线程模型&#xff0c;详见&#xff1a;Netty学习&#xff08;二&#xff09;&#xff1a;线程模型一、工作原理简图Netty主要基于主从 Reactors 多线程模型&#xff08;如下图&#xff09; 做了一定的改进&#xff0c;其中主从Reactor 多线程模型有多个R…

ServerSocket的构造方法

在开发TCP程序时&#xff0c;首先需要创建服务器端程序。JDK的java.net包中提供了一个ServerSocket娄&#xff0c;该类的实例对象可以实现一个服务器端的程序。通过查阅API文档可知&#xff0c;ServerSocket类提供了多个构造方法&#xff0c;接下来就对ServerSocket的构造方法进…

Pycharm配置QGIS环境

版本信息&#xff1a;QGIS&#xff1a; 3.22.16Pycharm&#xff1a;2022.3.2 (Community Edition)在QGIS官网下载安装包&#xff0c;下载稳定版本即可。配置步骤&#xff1a;安装完成后&#xff0c;使用Pycharm新建工程Python编译器选择之前配置好的编译器环境选择左侧第一个Vi…

YOLOv8训练自定义数据集(超详细)

借鉴 https://blog.csdn.net/qq_40716944/article/details/128648001一、准备训练环境安装 requirements.txt下载&#xff1a;https://raw.githubusercontent.com/ultralytics/ultralytics/main/requirements.txt然后在你 目录下执行pip install -r requirements.txt它的 requi…

【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)

leetcode28. 实现 strStr&#xff08;&#xff09; 1 题目2 KMP2.1 什么是KMP&#xff1f;2.2 KMP有什么用&#xff1f;2.3 什么是前缀表&#xff1f;2.4 最长公共前后缀2.5 为什么一定要用前缀表&#xff1f;2.6 如何计算前缀表2.7 前缀表与next数组2.8 使用next数组来匹配2.9…

2022 年度_职业项目总结_Java技术点归纳

Java技术点归纳目录概述需求&#xff1a;设计思路实现思路分析1.Structs 元工程改造2.个贷子系统开发3.架构的迭代开发&#xff0c;升级&#xff0c;部署&#xff0c;参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,fu…

学编程的 4 大阶段,你到哪了?

大家好&#xff0c;我是阅黑马学生无数的播妞……通过观察黑马学生的学习状态&#xff0c;播妞总结了他们来黑马后的四个学习状态&#xff0c;可以说&#xff0c;只要跨过这四个阶段&#xff0c;走向辉煌的编程人生就是必然的事情。阶段一&#xff1a;一窍不通这个阶段的学生&a…

2023初级会计详细学习计划打卡表!自律逆袭,一次上岸!

2023年初级会计职称考试报名时间&#xff1a;2月7日-28日考试时间&#xff1a;5月13日—17日给大家整理了《经济法基础》和《初级会计实务》两科超实用的学习打卡表重要程度、难易度、易错点、要求掌握内容、章节估分等都全部总结在一起&#xff0c;一目了然&#xff01;为什么…

rk3288-android8-IR-mouse

IR问题: mouse按键使用不了 然后排查: 1.排查上报 ir_key6{ rockchip,usercode <0xbf00>;rockchip,key_table <0xff KEY_POWER>,<0xfe KEY_MUTE>, <0xfd KEY_1>, <0xfc KEY_2>, <0xfb KEY_3>, <0xfa KEY_4>, <0xf9 KEY_5>…

JavaEE进阶第六课:SpringBoot ⽇志⽂件

上篇文章介绍了SpringBoot配置文件&#xff0c;这篇文章我们将会介绍SpringBoot ⽇志⽂件 荔枝1.日志有什么用2.自定义日志输出2.1获取程序日志对象2.2使用相关方法输出日志2.3日志级别2.3.1日志级别的作用2.3.2日志级别如何设置2.4日志格式3.持久化日志4.更简单的日志输出4.1使…

【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】

前言&#xff1a; 由于最近需要做移动端的项目 有个pc端的后台系统里面需要移一部分页面过来 而里面就有很多的表格&#xff0c;我就开始惯例网上先找前人栽的树&#xff0c;我好乘凉 然后找了一圈发现&#xff0c;不管是主流的移动端ui库或者网上自己写的帖子&#xff0c;或者…

224. 基本计算器

224. 基本计算器给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 示例 1&#xff1a;输入&#xff1a;s "1 1"输出&#xff1a;2示例 2&#…

【Pygame实战】变异狗大战:据说是最近还不错的小游戏,这一个个玩到表情崩坏,点开即玩,赶紧来~(Python代码搞笑版本)

前言 只有你想不到&#xff0c;没有我找不到写不了的好游戏&#xff01; 哈喽。我是你们的栗子同学啦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 今天小编去了我朋友家里玩儿&#xff0c…

ExSwin-Unet 论文研读

ExSwin-Unet摘要1 引言2 方法2.1 基于窗口的注意力块2.2 外部注意力块2.3 不平衡的 Unet 架构2.4 自适应加权调整2.5 双重损失函数3 实验结果3.1 数据集3.2 实现细节3.3 与 SOTA 方法的比较3.4 消融研究4 讨论和限制5 结论数据集来源&#xff1a; https://feta.grand-challenge…

图扑 Web SCADA 智慧制硅厂,打造新时代制硅工业

前言 我国目前是全球最大的工业硅生产国、消费国和贸易国&#xff0c;且未来该产业的主要增量也将来源于我国。绿色低碳发展已成为全球大趋势和国际社会的共识&#xff0c;随着我国“双碳”目标的推进&#xff0c;光伏产业链快速发展&#xff0c;在光伏装机需求的带动下&#…

武汉凯迪正大KD305系列智能数字绝缘电阻测试仪

一、概述 KD305系列智能数字绝缘电阻测试仪采用嵌入式工业单片机实时操作系统&#xff0c;数字模拟指针与数字段码显示结合&#xff0c;该系列表具有多种电压输出等级&#xff08;500V、1000V、2500V、5000V、10000V&#xff09;、容量大、抗干扰强、模拟指针与数字同步显示、交…

数据结构考研习题精选

&#xff11; A假设比较&#xff54;次&#xff0c;由于换或不换&#xff0c;则必然有&#xff12;&#xff3e;&#xff54;种可能。又设有&#xff4e;个关键字&#xff0c;&#xff4e;&#xff01;排列组合&#xff0c;则必然有&#xff12;&#xff3e;&#xff54;&…