Heim >Backend-Entwicklung >Golang >Wie validiere ich JWT-Tokens von AWS Cognito in Go?

Wie validiere ich JWT-Tokens von AWS Cognito in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-12-15 01:40:11765Durchsuche

How to Validate JWT Tokens from AWS Cognito in Go?

Validierung von JWT-Tokens von AWS Cognito in Go

Dieser Artikel befasst sich mit der Herausforderung der Validierung und Extraktion von Informationen aus von Amazon Cognito ausgegebenen JWT-Tokens. Der Integrationsprozess mit der Google-Authentifizierung und dem Token-Endpunkt von Cognito wird zusammen mit häufigen Fallstricken besprochen.

Erhalten des öffentlichen Schlüssels

Zur Validierung von JWT-Tokens ist ein öffentlicher Schlüssel erforderlich . Cognito stellt einen JSON Web Key (JWK)-Satz mit öffentlichen Schlüsseln bereit unter:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

Diese Dateistruktur kann manuell analysiert werden, um öffentliche Schlüssel zu generieren, jedoch unter Verwendung einer Bibliothek wie jwx (https://github.com/lestrrat-go/jwx) vereinfacht den Prozess.

Token-Verifizierung mit JWT-Go

Sobald öffentliche Schlüssel verfügbar sind, jwt -go (https://github.com/dgrijalva/jwt-go) kann zur Überprüfung von Token genutzt werden. Die folgenden Schritte beschreiben den Prozess:

  1. Parsen Sie den JWK-Satz mit jwx:
keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE)
  1. Verwenden Sie beim Parsen des Tokens mit jwt-go das „ Geben Sie im Feld „Kind“ den entsprechenden Schlüssel zur Verifizierung ein:
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
})

Indem Sie diese Schritte befolgen, Entwickler können JWT-Tokens von AWS Cognito in Go effektiv validieren und analysieren und so die Authentizität und Integrität der Token sicherstellen.

Das obige ist der detaillierte Inhalt vonWie validiere ich JWT-Tokens von AWS Cognito in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn