Postman - 使用密钥文件进行 JWT 身份验证

2024-02-18

我正在尝试使用 Postman 来测试在 Google Cloud Platform 上开发的 API:API 端点后面的 App Engine。
我有 JSON 格式的密钥文件:

{
  "type": "service_account",
  "project_id": "[[my_project_name]]",
  "private_key_id": "[[private_key_id]]",
  "private_key": "-----BEGIN PRIVATE KEY-----\n[[private_key]]\n-----END PRIVATE KEY-----\n",
  "client_email": "[[service_account_email]]",
  "client_id": "",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/[[service_account_email]]"
}

我可以使用 python 代码检索访问令牌:

import time
import google.auth.crypt
import google.auth.jwt

sa_keyfile='[[path_to_the_api_key_file]]'
sa_email='[[service_account_email]]'
audience='[[my_api_url]]'
expiry_length=3600
now = int(time.time())
payload = {
    'iat': now,
    "exp": now + expiry_length,
    'iss': sa_email,
    'aud':  audience,
    'sub': sa_email,
    'email': sa_email
}

signer = google.auth.crypt.RSASigner.from_service_account_file(sa_keyfile)
jwt = google.auth.jwt.encode(signer, payload)

print(jwt)

如果我在 Postman 中设置OAuth 2.0作为身份验证方法并将获得的 JWT 粘贴为Access Token那么请求就可以正常工作了。

我想将整个 JWT 令牌操作移至 Postman 中,而不需要提前调用 Python 代码。我尝试使用Get New Access Token来自 Postman,但这两个选项都不支持 JSON 密钥文件。
是否可以仅使用 Postman 从 JSON 密钥文件获取 JWT 令牌?


在 GCP 中授权用户的方法有多种。本质上,谷歌的首选方式是使用密钥对签署请求并将其发送给谷歌以确保应用程序的真实性,并授权与上下文相关的 JWT。虽然有许多选项解释了如何在服务器端执行此操作,但您需要注意这些凭据实际上允许您访问平台本身。这本质上是 oAuth 工作流程和 JWT,您可以获得具有不同范围的不同源,这反过来又允许您调用与它们相关的端点。

对于邮递员,您可以遵循文档中提到的简单 oAuth 工作流程,该流程非常简单创建客户端 ID https://cloud.google.com/endpoints/docs/frameworks/python/creating-client-ids

当然,您需要实现服务器端部分来调用平台 API,因为它们不应该直接公开,因此在获取平台令牌时提供了额外的安全性来获取签名请求。

如果您想授权最终用户,这是正确的指南:验证用户身份 https://cloud.google.com/endpoints/docs/frameworks/python/authenticating-users同一指南还有关于如何授权其他“类型”应用程序的其他选项。

假设您使用 OpenApi Specs 作为访问 RESTFUL api 的标准方式。 Google 有大量关于使用特定身份验证提供商来使用其服务的文档。

选择身份验证方法 https://cloud.google.com/endpoints/docs/openapi/authentication-method

每种方法都有其优点和缺点,请选择最合适的方法,以适当的权限使用 JWT。

其他文档可以在这里找到云端点文档 https://cloud.google.com/endpoints/docs

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

Postman - 使用密钥文件进行 JWT 身份验证 的相关文章

随机推荐

  • MySQL-1300-更新时 utf8 字符串无效

    我有一个 MySQL 表列 我正在尝试将其从 latin1 转换为 UTF8 该列中的某些值已经是 UTF8 但它们存储为 latin1 这会导致一些看起来很奇怪的文本 切换列非常简单 我所要做的就是 ALTER TABLE user pr
  • 使用 WTForms 进行长排序下拉列表

    我想按字母顺序创建美国各州的下拉列表 我已将状态元组转换为 OrderedDict 并将其输入到我的 WTForms SelectField 中 import collections import wtforms STATE ABBREV
  • 在 XCode 5 中将项目导入远程 SVN 服务器

    以前在 XCode 4 中 在 Organizer 屏幕的 Repositories 部分中 有一个选项 导入 可将项目导入到 SVN 服务器中 该选项现在在 Xcode 5 的 Source Control 菜单中被禁用 尽管存储库已添加
  • Windows 7 无法写入物理驱动器?

    我编写了一个磁盘实用程序 允许您擦除整个物理驱动器 它使用 Windows 文件 api 调用 destFile CreateFile PhysicalDrive1 GENERIC WRITE FILE SHARE READ FILE SH
  • 如何使用 Postman 表单数据在 Django REST Framework 中发布嵌套数组?

    我有一个带有数组字段的嵌套可写序列化器 我需要用表单数据测试它 因为字段类型之一是ImageField 当我改变了ImageField into CharField如果我用原始 JSON 格式发布它 效果很好 我的简化版serializer
  • Linux下使用索引的文件搜索算法

    我想在linux中使用索引实现一个文件搜索程序 我知道还有其他几个文件搜索程序 例如beagled 但我这样做是为了学习目的 我对如何进行索引感到震惊 我从 maemo mapper 应用程序中得到了以下想法 例如 如果您有名为 sures
  • Symfony2 注销问题

    我正在 Symfony2 中测试安全环境 并且在注销过程中遇到问题 这是我的 security yml 文件 security firewalls secured area pattern anonymous switch user tru
  • 获取 IIS 应用程序文件系统路径

    我安装了 IIS 7 0 并且有一个带有 svc 服务的 net 应用程序 我想在应用程序指向的虚拟目录中指向一个文件 请注意 我在应用程序中转换了虚拟目录 但是 当我尝试使用 net verse 中的通用 api 调用打开文件 并且不指定
  • 比较 UIColors 或 CGColor 或 CGColorSpace

    我在比较 UIColors 时遇到问题 我有一张图像 我已成功提取用户单击的图像上的颜色 现在我想将该颜色与其他颜色进行比较 但我得到了一些奇怪的结果 这是我尝试过的 CGColorRef pixelColor buttonImage co
  • WordPress 插件 + Composer?

    我正在制作使用一些第三方库的 WordPress 插件 使用 Composer for WordPress 插件是常见做法吗 如果可以使用它 那么我认为我应该提供所有 Composer 文件以及我的插件 因为我不想让人们手动运行compos
  • 在多维数组中搜索某些值

    我有一个以下格式的多维数组 0 id gt 1 type gt fish owner gt bob 1 id gt 2 type gt cat owner gt mary 2 id gt 3 type gt dog owner gt lar
  • 通过 GitHub API 访问链接的 SAML 身份

    我想使用 GitHub API 任何版本 获取组织中 GitHub 登录名和电子邮件之间的映射 我可以使用以下 GraphQL 查询获取组织成员帐户上的电子邮件 query organization login myorg members
  • 如果 SSIS 中的值为 NULL,则条件拆分失败

    我根据以下规则将完整外连接的结果传递给条件拆分和过滤记录 基本上两个表具有相同的架构 并且主键值相同 a If Primary key of Source is NULL b If Primary Key of Destination is
  • MySQL:按块检索大选择

    我已经选择了更多 7000 万行 我想将选定的数据保存到一个大的csv文件于win2012 R2 问 如何从 MySQL 中按块检索数据以获得更好的性能 因为当我尝试保存一个我得到的大选择时 内存不足错误 您可以尝试使用LIMIT特征 如果
  • 存储和检索 SHA-256 散列和加盐密码的正确方法

    这是我第一次尝试安全地存储密码 我想确保一切都正确完成 建议我将 SHA 256 哈希与 salt 一起使用 假设用户通过表单提交了密码 我们通过以下方式获取密码 password POST password 对 password 加盐并对
  • ASP.NET MVC 和 IIS 5

    让 ASP NET MVC 应用程序托管在 IIS 5 6 或 7 上运行的最佳方法是什么 当我尝试发布 ASP NET MVC 应用程序时 我收到的似乎只是 404 错误 我做了一些谷歌搜索并找到了一些解决方案 但看起来都不是超级优雅 而
  • 如何从 Jena API Eclipse 项目启动 Fuseki 服务器?

    您好 我也是语义 Web 域和 Apache Jena 环境的新手 这就是我发布此问题的原因 我有一个使用 Jena API 的项目 当我运行它时 它会在控制台中显示输出 我确实从命令行运行了 Fuseki 服务器 它作为本地服务器运行 我
  • 运行 crontab 时出现权限被拒绝错误[重复]

    这个问题在这里已经有答案了 我在文件夹 csv file 中创建了一个 r 脚本 marc Marc Linux csv file ls 8388 26580527145 csv csv file Rproj excel source wr
  • Spark Dataframes UPSERT 到 Postgres 表

    我正在使用 Apache Spark DataFrames 来连接两个数据源并将结果作为另一个 DataFrame 获取 我想将结果写入另一个 Postgres 表 我看到这个选项 myDataFrame write jdbc url ta
  • Postman - 使用密钥文件进行 JWT 身份验证

    我正在尝试使用 Postman 来测试在 Google Cloud Platform 上开发的 API API 端点后面的 App Engine 我有 JSON 格式的密钥文件 type service account project id