Go에서 AWS Cognito JWT 토큰 확인
소개
JWT에서 정보 확인 및 추출 Amazon Cognito에서 발행한 토큰은 Go에서 어려울 수 있습니다. 이 문서에서는 이 작업을 효과적으로 처리하기 위한 간결한 가이드를 제공합니다.
사전 조건
AWS Cognito 사용자는 JWKS 엔드포인트에서 공개 JSON 웹 키(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!