如何验证 AWS SigV4 签名

2024-03-04

我有一个服务器将接收带有 SigV4 授权标头的请求,并且基于 SigV4 的验证,我将授予数据访问权限。我们如何验证SigV4?我一直在尝试获取用于验证 SigV4 的文档,但无法获取它?有什么办法可以反编译签名并检查身份验证然后授权吗?


The Sigv4 签名算法 https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html is

kSecret = your secret access key
kDate = HMAC("AWS4" + kSecret, Date)
kRegion = HMAC(kDate, Region)
kService = HMAC(kRegion, Service)
kSigning = HMAC(kService, "aws4_request")

这使用了一个HMAC https://en.wikipedia.org/wiki/HMAC。 HMAC 使用共享密钥而不是非对称公钥/私钥。

因此,为了验证签名,您的服务器需要知道每个客户端的密钥,或者至少知道kSigning通过将该秘密绑定到特定日期、区域和服务而派生。

这样做的缺点是,能够验证来自任何(客户端、日期、区域、服务)的请求的服务器也能够生成新请求并将其签名为该身份。根据您的体系结构,如果服务器不比其所有客户端更受信任,这可能会成为问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证 AWS SigV4 签名 的相关文章

  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • 使用 Gradle 构建具有依赖项的 JAR

    我有一个多项目构建 我在其中一个子项目中放置了构建一个胖 JAR 的任务 我创建了与该任务类似的任务这本食谱中描述的 http docs codehaus org display GRADLE Cookbook Cookbook Creat
  • 将字符串转换为泛型类型

    我的程序必须从文件接收输入 输入可以是字符 整数或字符 这样 我必须根据文件中给出的元素创建一棵树 输入的类型在文件的开头给出 我的问题是我的 insertNode 函数接收通用类型 T 的元素 但文件被读取为字符串 如何将字符串转换为 T
  • 操作数数据类型日期对于减法运算符无效

    我的表中有一个字段称为 LastDate with DataType Date 我将编写一个函数来计算 LastDate PassedParameter 但是发生错误 Operand data type date is invalid fo
  • 存根 [[SomeClazz alloc] init] 不起作用,但接受的答案说它应该起作用

    我测试的功能非常简单 implementation MyHandler void processData DataService service DataService alloc init NSDictionary data servic
  • Flutter 应用程序名称可以国际化吗?

    刚接触 flutter 有没有办法将我的应用程序名称国际化 我发现其他应用程序也可以做到这一点 我能够按照此处的指南将应用程序中的字符串国际化 https phrase com blog posts flutter localization
  • 来自 JS 和 HTML 导入的相对路径资源

    我有一个 聚合物 Web 组件 我希望人们能够以跨源资源共享 CORS 方式访问该组件 这工作得很好 只是我不确定如何为该组件内的 JS 代码中的图像和 JSON 文件等资源提供相对路径 它们被解释为相对于包含页面 而不是相对于 HTML
  • 仅当调整窗口大小时,图层支持的 OpenGLView 才会重绘

    我有一个带有类型主视图的窗口NSView和一个子视图 它是NSOpenGLView谁的名字是CustomOpenGLView 的子类NSOpenGLView是通过一个获得Custom View在 Interface Builder 中并将其
  • Mongodb聚合5分钟

    我有 IoT 传感器 它们每秒发送事件 并将事件存储在 MongoDB 中 格式如下 id stp 23 HP 1261 0 1357 0 1337 0 1250 0 1269 0 1134 0 1219 0 1269 0 1166 0 1
  • 架构独立的实体框架代码优先迁移

    我在使用针对 Oracle 数据库的实体框架迁移时遇到了麻烦 因为架构名称包含在迁移代码中 并且对于 Oracle 架构名称也是用户名 我的目标是拥有独立于模式的 Code First 迁移 能够拥有一组用于测试和生产环境的迁移 我已经尝试
  • Chartjs 条形图悬停时显示旧数据

    我有一个使用 Chart js 创建的条形图 页面加载时一切正常 但是当我使用日期范围选择器更改时间范围时 会出现故障 新数据已引入 但当我将鼠标悬停在其上时 会显示旧数据 我是 javascript 新手 所以我希望得到一些帮助 看起来我
  • 如何在不将可执行文件重命名为 iexplore.exe 的情况下获得 WebBrowser 控件的最大性能?

    我正在编写一个本机应用程序 它在嵌入式中执行大量 CSS3 动画网页浏览器控件 http msdn microsoft com en us library aa752040 28v vs 85 29 aspx 但动画在独立版 IE10 中更
  • 如何在使用变量之前测试变量是否已经初始化?

    因此 假设您有一个带有变量的应用程序 当您独立加载它时 即当您使用if name main 此外 当客户端导入应用程序以在另一个应用程序中使用时 将调用一个方法 该方法还将实例化该变量 我想做的是在定义变量之前测试变量是否已经被实例化 这样
  • Git 因致命错误而失败,拒绝使用 Git 推送合并不相关的历史记录

    我在本地做了一些更改 我正在尝试将其推送到 GitHub 我读过我可以使用 allow unrelated histories 但我只看到了演示如何执行此操作的示例pull 这不是我需要的 我需要使我的本地目录成为master 我尝试了以下
  • Android 上的 HttpURLConnection 失败

    已解决 请参阅下面的评论 我有一个实现分段文件上传的类 该代码适用于我尝试过的每个 Java 客户端 Android 除外 并且它是我的 Android 应用程序中唯一不能与我的后端服务很好地配合的 HTTP 请求代码 连接响应代码是 1
  • 调试无法与 Android Studio 一起使用的 C++/本机库模块(使用 Cmake)

    我在调试库模块的 C 文件时遇到问题 这在一般情况下可能吗 如果应用程序项目包含 C 代码 则调试工作正常 但我想将 C 代码移至库模块 启动会话时出现错误消息 现在启动本机调试会话 注意力 未找到符号目录 请检查您的本机调试配置 我的 l
  • 不同功能的样本数量不同

    plot x 3 x 2 5 x 12 是否可以设置x 3只有 2 个样本并且x 2 5 x 12比如说同一个图中有 1000 个样本 这是可以做到的 但不是开箱即用的 第一个变体使用临时文件来保存一个低采样率的函数 并稍后将其与高分辨率函
  • Android Studio - 未找到 SDK - 设置向导失败 - 防火墙代理

    言归正传 我处于公司防火墙后面 我必须手动下载 Android Studio 的 zip 文件 并将其提取到我的计算机上的程序文件 Windows 10 中 当我启动工作室时 我的对话工作室需要检索 SDK 我尝试这样做 但在这 3 个 z
  • 如何在 iOS 上制作爆炸动画?

    我有一款 iOS 游戏 当球击中目标时就会爆炸 动画爆炸的最佳方式是什么 如果您正在寻找简单的东西 制作一系列动画爆炸的图像 将它们添加到 UIImageView 并启动动画 像这样的事情 UIImage image0 UIImage im
  • SoapUI:如何将指纹作为 SecurityTokenReference 添加到 wss SIGNATURE 条目

    我有一个关于soapUI的问题 我正在尝试将 ws security 标头添加到包含签名的肥皂请求中 为此 我在项目首选项中使用了soapUI 对话框 WS Security Configurations 它按预期工作 但我的服务器应用程序
  • 如何验证 AWS SigV4 签名

    我有一个服务器将接收带有 SigV4 授权标头的请求 并且基于 SigV4 的验证 我将授予数据访问权限 我们如何验证SigV4 我一直在尝试获取用于验证 SigV4 的文档 但无法获取它 有什么办法可以反编译签名并检查身份验证然后授权吗