gpt4 book ai didi

go - 在 Go 中从 GitHub App PEM 私钥生成 JWT

转载 作者:行者123 更新时间:2023-12-01 22:55:19 33 4
gpt4 key购买 nike

我正在尝试使用 GitHub 应用程序,我需要生成一个 JWT 用于身份验证(https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#generating-a-private-key)我正在尝试使用 Goland 来做到这一点。我如何在 Go 中从 PEM 私钥生成 JWT??

最佳答案

jwt-go 库拥有您需要的所有工具,并且有很好的文档记录。您可以在 https://github.com/golang-jwt/jwt 找到它.

假设您了解 JWT 是什么以及它们的结构,并且您可以将 PEM key 作为 [] 字节获取,则过程大致如下:

  1. 将“github.com/golang-jwt/jwt/v4”添加到您的导入中。
  2. 创建一组声明,其中可以包括 RegisteredClaims 类型和您可能需要的任何自定义声明。
  3. 使用 jwt.NewWithClaims() 创建 token - 您需要提供适当的签名方法。我主要使用 RS256。
  4. 使用 token.SignedString() 从 token 创建 JWT 字符串。

在实践中,它看起来像这样:

imports "github.com/golang-jwt/jwt/v4"

type MyCustomClaims struct {
*jwt.RegisteredClaims
FooClaim int
BarClaim string
}

func CreateJWT(pemKey []byte) string {
// expires in 60 minutes
expiration := time.Now().Add(time.Second * 3600)

claims := MyCustomClaims{
RegisteredClaims: &jwt.RegisteredClaims{
Issuer: "Example Code Inc.",
ExpiresAt: jwt.NewNumericDate(expiration),
Subject: "JWT Creation",
},
FooClaim: 123,
BarClaim: "bar",
}

token := jwt.NewWithClaims(jwt.SigningMethodRS256, claims)

privateKey, _ := jwt.ParseRSAPrivateKeyFromPEM(pemKey)

myJWT, _ := jwt.SignedString(privateKey)

return myJWT
}

关于go - 在 Go 中从 GitHub App PEM 私钥生成 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73399076/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com