在与 Apple 集成登录时,您会在您的 Apple 开发者帐户中生成一个密钥。

这是一个名为 like 的文件,AuthKey_3JMD5K6.p8看起来像


-----BEGIN PRIVATE KEY-----

MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf

asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregR

LKJIOEWFNLasdflkawefjoiasdflk

-----END PRIVATE KEY-----

所以我做了一个var appleKey := MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregRLKJIOEWFNLasdflkawefjoiasdflk


我之前使用 HMAC-SHA 方法签署了 jwt,这相当简单,但我不知道如何使用 ECDSA 方法签署 jwt。


我以与 HMAC-SHA 方法相同的方式编写代码,但出现错误key is of invalid type


那么使用 golang 的 jwt 库如何使用 ECDSA 方法签署我的 jwt?


我的代码


  // generate client secret jwt using apple key

  expirationTime := time.Now().Add(5 * time.Minute)

  claims := &Claims{

    StandardClaims: jwt.StandardClaims {

      Audience: "https://appleid.apple.com",

      Subject: "com.app.ios",

      Issuer: string(appleTeamId),

      ExpiresAt: expirationTime.Unix(),

      IssuedAt: time.Now().Unix(),

    },

  }

  appleToken := jwt.NewWithClaims(jwt.SigningMethodES256, claims)

  appleToken.Header["kid"] = appleKid


  signedAppleToken, err := appleToken.SignedString(appleKey)

我现在知道这不是你的做法,它比这更复杂一些,但这样做的方法是什么?


我发现这篇文章告诉您如何手动执行此操作:http:

//p.agnihotry.com/post/validating_sign_in_with_apple_authorization_code/


但我已经将 jwt 库用于 golang 用于令牌的另一部分:

https ://godoc.org/github.com/dgrijalva/jwt-go