Maison > développement back-end > Golang > Comment valider les jetons JWT d'AWS Cognito dans Go ?

Comment valider les jetons JWT d'AWS Cognito dans Go ?

Linda Hamilton
Libérer: 2024-12-15 01:40:11
original
757 Les gens l'ont consulté

How to Validate JWT Tokens from AWS Cognito in Go?

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 :

  1. Analyser l'ensemble JWK à l'aide de jwx :
keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE)
Copier après la connexion
  1. Lors de l'analyse du jeton avec jwt-go, utilisez le " kid" pour localiser la clé appropriée pour la vérification :
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
})
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal