Go での AWS Cognito JWT トークンの検証
概要
JWT からの情報の検証と抽出Amazon Cognito によって発行されたトークンは、Go では困難になる可能性があります。この記事では、このタスクを効果的に処理するための簡潔なガイドを提供します。
前提条件
AWS Cognito ユーザーは、JWKS エンドポイントからパブリック JSON Web キー (JWK) セットを取得する必要があります。
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
JWK の解析と検証JWT
JWK セットを解析して JWT を検証するには、次の使用を検討してください:
実装
例コード
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"]) }
結論
jwk や jwt-go などのライブラリを利用することで、開発者は Go で効率的に Cognito JWT トークンのデータを検証および取得できます、アプリケーションでユーザーを認証するための安全かつ便利な方法を提供します。
以上がGo で AWS Cognito JWT トークンを確認する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。