我创建了一个 GitHub 应用程序并拥有该应用程序的
client-secret
和 client-id
。
我希望能够使用这个新应用程序来简单地向 GitHub 进行身份验证。
为此,我需要使用应用程序的
client_id
和 client_secret
生成 JWT 令牌,然后该令牌将允许我执行以下命令:
curl --request GET \
--url "https://api.github.com/app" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR_JWT" \
--header "X-GitHub-Api-Version: 2022-11-28"
问题是,我找不到任何有关如何使用给定的应用程序属性(
client_id
和client_secret
)生成此 JWT 令牌的文档。我已经在 GitHub 文档页面上看到了此文档,但它只是展示了如何使用 JTW 令牌,而不是如何生成它。
如何使用 GitHub 应用程序的
client_id
和 client_secret
创建 JWT 进行身份验证?
生成 JSON Web 令牌中显示的示例是您正在寻找的代码格式的文档。
JWT 是使用私钥签名的 json 字符串,并以 Base64 格式编码,以便于传递。任何拥有公钥的人都可以验证它的真实性。
对于 Github 应用程序,您需要使用应用程序的私钥对 json 字符串进行签名,Github 将使用它已有的公钥来验证您是 JWT 的发行者。
client_id
和 client_secret
不用于创建 JWT,也不用于访问 API 或存储库数据;只有私钥是。
查看我的答案如何使用带有 OAuth 的 GitHub 应用程序访问私有存储库?了解如何作为应用程序向 Github 进行身份验证,该应用程序使用 JWT 获取临时安装访问令牌,这是访问 API 所需的内容一个应用程序,以及安装中的存储库