Cabaran
Mengesahkan dan mengekstrak maklumat daripada token JWT yang dikeluarkan oleh AWS Cognito boleh menjadi tugas yang sukar kerana kekurangan pakej Go yang sesuai. Walaupun menggunakan perpustakaan yang biasa tersedia, prosesnya tetap kompleks. Artikel ini bertujuan untuk memudahkan tugas ini dengan menyediakan penyelesaian langkah demi langkah menggunakan perpustakaan yang sesuai.
Kunci Pengesahan: Kunci Awam
Untuk mengesahkan token JWT , kunci awam yang sepadan adalah penting. Kekunci ini boleh diperolehi daripada URL JWK (JSON Web Key) yang disediakan oleh AWS Cognito:
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
Parsing Keys and Verifying Token
Pendekatan yang disyorkan adalah untuk gunakan perpustakaan jwk dan jwt-go secara serentak. jwx memudahkan menghuraikan kunci awam daripada URL JWK, manakala jwt-go membantu dalam mengendalikan token JWT:
// Parse public keys keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE) // Verify JWT token token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { // Check signing method if _, ok := token.Method.(*jwt.SigningMethodRS256); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } // Extract key ID ("kid") from JWT header kid, ok := token.Header["kid"].(string) if !ok { return nil, errors.New("kid header not found") } // Find the public key keys := keySet.LookupKeyID(kid) if !ok { return nil, fmt.Errorf("key with specified kid is not present in jwks") } // Parse public key var publickey interface{} err = keys.Raw(&publickey) if err != nil { return nil, fmt.Errorf("could not parse pubkey") } return publickey, nil
Kesederhanaan Diperolehi Semula dalam Go
Dengan memanfaatkan jwx dan perpustakaan jwt-go, proses mengesahkan dan menghurai token JWT yang dikeluarkan oleh AWS Cognito menjadi dipermudahkan dengan ketara. Pendekatan ini menawarkan penyelesaian yang jelas dan ringkas untuk pengesahan dan kebenaran dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan dan Mengesahkan Token JWT AWS Cognito dengan Mudah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!