
我需要审查一个拉取请求,该请求正在修复样本报告的问题,并且在测试通过时,感觉样本中肯定还有更多事情需要更改。
我了解 json web token(jwt 发音为“jots”)有一段时间了,但我不了解它们。看到这个 pr 让我有理由进一步深入研究它们。
jwt 是一种用于在各方之间安全传输信息的开放标准方法。它们通常用于验证用户身份并授权对资源的访问。它们由 3 部分组成:标头、有效负载和签名。
iam 服务账户凭证 api 创建短期凭证来模拟 iam 服务账户。 signjwt 方法将使用服务帐户的系统管理私钥对 jwt 进行签名。在signjwt方法的请求正文中,有效负载字段应包含一个序列化的json对象,该对象包含jwt声明集。
声明是 jwt 传输的核心信息。
以下是有效声明集的示例:
{
"iss": "https://cloud.google.com/iam",
"sub": "projects/-/serviceaccounts/my-service-account@my-project.iam.gserviceaccount.com",
"aud": "https://my-iap-protected-app.example.com",
"iat": 1694003600,
"exp": 1694007200
}
此声明集包含以下字段:
通过将这些声明包含在 jwt 的有效负载中,您可以确保其有效并可用于访问受 iap 保护的资源。
友点企业网站管理系统集电脑网站、手机网站、微信三站合一,只要录入一次数据,三站数据自动同步,降低人力维护成本;共用一个管理后台,只要一个虚拟主机,有效节约空间投资。系统采用PHP进行开发,它具有操作简单、功能强大、稳定性好、易扩展、安全性强、后期维护方便等特点,可以帮您迅速、轻松地构建起一个强大专业的企业网站。
134
原始代码看起来像
iat = datetime.datetime.now(tz=datetime.timezone.utc)
exp = iat + 3600
return json.dumps(
{
"iss": service_account_email,
"sub": service_account_email,
"aud": resource_url,
"iat": iat,
"exp": exp,
}
)
我知道测试出了问题,但我不想阻止解决此代码的根本问题。
公关作者提交了更改
iat = datetime.datetime.now(tz=datetime.timezone.utc).timestamp()
这似乎是一个不完整的修复。根据 api 的文档,我意识到提交的修复仍然不会将 iat 设置为 int 类型,并且仍然会失败。我提出了一个小小的改变,可以解决 pr 的问题
now_utc = datetime.datetime.now(tz=datetime.timezone.utc) iat = int(now_utc.timestamp())
我想得越多,我意识到日期时间对于这个示例没有用处。 datetime 模块提供了用于操作日期和时间的类,当您需要日期时,这些类非常有用。我们确实需要一个 utc 格式的整数,因此 time 模块更有用。
insetad,我们能做到
now = int(time.time())
return json.dumps(
{
"iss": service_account_email,
"sub": service_account_email,
"aud": resource_url,
"iat": now,
"exp": now + 3600,
}
)
在此处查找此示例的完整(更新!)代码。
以上就是构建有效的 JWT 声明集的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号