Mengesahkan AWS Cognito JWT Token dalam Go
Pengenalan
Mengesahkan dan mengekstrak maklumat daripada JWT token yang dikeluarkan oleh Amazon Cognito boleh menjadi cabaran dalam Go. Artikel ini menyediakan panduan ringkas untuk mengendalikan tugas ini dengan berkesan.
Prasyarat
Pengguna AWS Cognito mesti mendapatkan JSON Web Key (JWK) awam yang ditetapkan daripada titik akhir JWKS:
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
Menghuraikan JWK dan Mengesahkan JWT
Untuk menghuraikan set JWK dan mengesahkan JWT, pertimbangkan untuk menggunakan:
Pelaksanaan
Contoh Kod
package main import ( "fmt" jwt "github.com/dgrijalva/jwt-go" "github.com/lestrrat-go/jwx/jwk" ) func main() { // Replace with your Cognito token and Cognito JWKS endpoint tokenString := "YOUR_JWT_TOKEN" endpoint := "YOUR_COGNITO_JWKS_ENDPOINT" keySet, err := jwk.Fetch(endpoint) if err != nil { fmt.Println(err) return } // Parse the JWT token and validate its signature using the public key token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodRS256); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } kid, ok := token.Header["kid"].(string) if !ok { return nil, errors.New("kid header not found") } keys := keySet.LookupKeyID(kid) if !ok { return nil, fmt.Errorf("key with specified kid is not present in jwks") } var publickey interface{} err = keys.Raw(&publickey) if err != nil { return nil, fmt.Errorf("could not parse pubkey") } return publickey, nil }) if err != nil { fmt.Println(err) return } // Access the claims from the validated JWT token claims := token.Claims.(jwt.MapClaims) fmt.Println("User ID: ", claims["sub"]) }
Kesimpulan
Dengan menggunakan perpustakaan seperti jwk dan jwt-go, pembangun boleh mengesahkan dan mendapatkan semula data daripada token Cognito JWT dalam Go dengan cekap , menyediakan cara yang selamat dan mudah untuk mengesahkan pengguna dalam aplikasi mereka.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Token JWT AWS Cognito dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!