Validation des jetons JWT d'AWS Cognito dans Go
Cet article aborde le défi de la validation et de l'extraction d'informations à partir des jetons JWT émis par Amazon Cognito. Le processus d'intégration avec l'authentification Google et le point de terminaison du jeton de Cognito est abordé, ainsi que les pièges courants.
Obtention de la clé publique
Pour valider les jetons JWT, une clé publique est requise . Cognito fournit un ensemble de clés Web JSON (JWK) contenant des clés publiques à l'adresse :
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
Cette structure de fichiers peut être analysée manuellement pour générer des clés publiques, mais en utilisant une bibliothèque comme jwx (https://github.com/lestrat-go/jwx) simplifie le processus.
Vérification des jetons à l'aide de JWT-Go
Une fois les clés publiques disponibles, jwt -go (https://github.com/dgrijalva/jwt-go) peut être utilisé pour vérifier les jetons. Les étapes suivantes décrivent le processus :
keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE)
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 })
En suivant ces étapes, les développeurs peuvent valider et analyser efficacement les jetons JWT d'AWS Cognito dans Go, garantissant ainsi l'authenticité et l'intégrité des jetons.
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!