チャレンジ
発行された JWT トークンからの情報の検証と抽出適切な Go が不足しているため、AWS Cognito は困難な作業になる可能性がありますパッケージ。一般的に入手可能なライブラリを使用しているにもかかわらず、プロセスは依然として複雑です。この記事は、適切なライブラリを使用した段階的なソリューションを提供することで、このタスクを簡素化することを目的としています。
検証の鍵: 公開キー
JWT トークンを検証するには、対応する公開キーが必須です。これらのキーは、AWS Cognito によって提供される JWK (JSON Web Key) URL から取得できます:
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
キーの解析とトークンの検証
推奨されるアプローチは次のとおりです。 jwk ライブラリと jwt-go ライブラリを連携して利用します。 jwx は JWK URL からの公開キーの解析を簡素化し、jwt-go は JWT トークンの処理を支援します。
// Parse public keys keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE) // Verify JWT token token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { // Check signing method if _, ok := token.Method.(*jwt.SigningMethodRS256); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } // Extract key ID ("kid") from JWT header kid, ok := token.Header["kid"].(string) if !ok { return nil, errors.New("kid header not found") } // Find the public key keys := keySet.LookupKeyID(kid) if !ok { return nil, fmt.Errorf("key with specified kid is not present in jwks") } // Parse public key var publickey interface{} err = keys.Raw(&publickey) if err != nil { return nil, fmt.Errorf("could not parse pubkey") } return publickey, nil
Go で取り戻したシンプルさ
jwx を活用することでおよび jwt-go ライブラリ、JWT トークンを検証および解析するプロセスAWS Cognito によって発行される処理が大幅に簡素化されます。このアプローチは、Go での認証と認可のための明確かつ簡潔なソリューションを提供します。
以上がGo で AWS Cognito JWT トークンを簡単に解析して検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。