도전
다음에서 발행한 JWT 토큰에서 정보 확인 및 추출 AWS Cognito는 적합한 Go 패키지가 부족하기 때문에 어려운 작업이 될 수 있습니다. 일반적으로 사용 가능한 라이브러리를 사용함에도 불구하고 프로세스는 여전히 복잡합니다. 이 문서의 목표는 적절한 라이브러리를 사용하여 단계별 솔루션을 제공하여 이 작업을 단순화하는 것입니다.
검증의 핵심: 공개 키
JWT 토큰을 검증하려면 , 해당 공개 키가 필수적입니다. 이러한 키는 AWS Cognito에서 제공하는 JWK(JSON 웹 키) 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!