在与 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