Postman-使用密钥文件的JWT身份验证 [英] Postman - JWT authentication using key file

查看:33
本文介绍了Postman-使用密钥文件的JWT身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Postman测试在Google Cloud平台上开发的API:API端点背后的应用程序引擎。
我有JSON格式的密钥文件:

{
  "type": "service_account",
  "project_id": "[[my_project_name]]",
  "private_key_id": "[[private_key_id]]",
  "private_key": "-----BEGIN PRIVATE KEY-----
[[private_key]]
-----END PRIVATE KEY-----
",
  "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)

如果我将PostmanOAuth 2.0设置为身份验证方法,并将获得的JWT粘贴为Access Token,则请求可以正常工作。

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

推荐答案

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

对于邮递员,您可以遵循文档中提到的简单OAuth工作流,该工作流程非常简单Creating client IDs

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

如果您想授权最终用户,这是正确的指南:Authenticating users 同一指南还提供了有关如何授权其他"类型"应用程序的其他选项。

假设您使用OpenApi spes作为其访问RESTful API的标准方式。 Google拥有大量有关使用特定身份验证提供商使用其服务的文档。

Choosing an Authentication Method

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

其他文档可在此处Cloud Endpoints documentation

找到

这篇关于Postman-使用密钥文件的JWT身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆