> 백엔드 개발 > Golang > Go에서 AWS Cognito JWT 토큰을 쉽게 구문 분석하고 확인하는 방법은 무엇입니까?

Go에서 AWS Cognito JWT 토큰을 쉽게 구문 분석하고 확인하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-28 08:33:11
원래의
296명이 탐색했습니다.

How to Easily Parse and Verify AWS Cognito JWT Tokens in Go?

Go의 AWS Cognito에서 JWT 토큰 구문 분석 및 확인

도전

다음에서 발행한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿