Go에서 AWS Cognito의 JWT 토큰 검증
이 문서에서는 Amazon Cognito에서 발행한 JWT 토큰에서 정보를 검증하고 추출하는 문제를 다룹니다. Google 인증 및 Cognito의 토큰 엔드포인트와의 통합 프로세스와 일반적인 함정에 대해 논의합니다.
공개 키 얻기
JWT 토큰을 검증하려면 공개 키가 필요합니다. . Cognito는 공개 키가 포함된 JWK(JSON 웹 키) 세트를 다음 위치에서 제공합니다.
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
이 파일 구조는 수동으로 구문 분석하여 공개 키를 생성할 수 있지만 jwx와 같은 라이브러리를 사용합니다. (https://github.com/lestrrat-go/jwx)는 프로세스를 단순화합니다.
JWT-Go를 사용한 토큰 확인
공개 키를 사용할 수 있게 되면 jwt -go(https://github.com/dgrijalva/jwt-go)를 활용하여 토큰을 확인할 수 있습니다. 다음 단계에서는 프로세스를 간략하게 설명합니다.
keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE)
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 })
이러한 단계를 따르면 개발자는 Go에서 AWS Cognito의 JWT 토큰을 효과적으로 검증하고 구문 분석하여 토큰의 신뢰성과 무결성을 보장할 수 있습니다.
위 내용은 Go에서 AWS Cognito의 JWT 토큰을 검증하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!