Maison >développement back-end >Golang >Comment vérifier les jetons AWS Cognito JWT dans Go ?
Vérification des jetons AWS Cognito JWT dans Go
Introduction
Validation et extraction d'informations de JWT les jetons émis par Amazon Cognito peuvent constituer un défi dans Go. Cet article fournit un guide concis pour gérer cette tâche efficacement.
Prérequis
Les utilisateurs d'AWS Cognito doivent récupérer la clé Web JSON publique (JWK) définie à partir du point de terminaison JWKS :
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
Analyse des JWK et vérification JWT
Pour analyser l'ensemble JWK et vérifier les JWT, pensez à utiliser :
Implémentation
Exemple Code
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"]) }
Conclusion
En utilisant des bibliothèques telles que jwk et jwt-go, les développeurs peuvent vérifier et récupérer efficacement les données des jetons Cognito JWT dans Go , offrant un moyen sécurisé et pratique d'authentifier les utilisateurs dans leurs applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!