При интеграции входа с Apple вы создаете ключ в своей учетной записи разработчика Apple. Это файл с именем AuthKey_3JMD5K6.p8
и выглядит как
-----BEGIN PRIVATE KEY-----
MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf
asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregR
LKJIOEWFNLasdflkawefjoiasdflk
-----END PRIVATE KEY-----
, поэтому я сделал var appleKey := MasdfjalskdasdflaASDFAadsflkjaADSFAewfljasdfljkasefasdflkjasdf asdfljkasdfASDFASDFoiqretasdoiyjlfsbgREtaREGSDFBREtafsrgAREGfdsgaregRLKJIOEWFNLasdflkawefjoiasdflk
Я подписал jwt с помощью метода HMA C -SHA раньше что довольно просто, но я не знаю, как подписать jwt с помощью метода ECDSA.
Я написал свой код так же, как и для метода HMA C -SHA, но получил ошибку key is of invalid type
Итак, используя библиотеку jwt для golang, как я могу подписать свой jwt методом ECDSA?
Мой код
// 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