jwt-go 라이브러리를 사용하여 Go 언어로 JWT 토큰 확인 및 인증 구현
jwt-go 라이브러리를 사용하여 Go 언어로 JWT 토큰 인증 구현
JWT(JSON 웹 토큰)는 JSON 형식을 기반으로 사용자와 시스템 간의 통신에 도움이 되는 경량 인증 및 권한 부여 방법으로 안전하고 신뢰할 수 있는 정보를 전달합니다. . JWT 토큰을 생성하는 과정에서 페이로드에 서명해야 합니다. 이는 서버 측에서 토큰을 구문 분석할 때 그 합법성을 확인할 수 있음을 의미합니다.
JWT 토큰의 인증 기능을 구현하기 위해 Go 언어로 된 jwt-go 라이브러리를 사용할 수 있습니다. jwt-go 라이브러리는 JWT 토큰을 생성, 확인 및 구문 분석하는 간단한 방법을 제공합니다. JWT 토큰은 점으로 구분된 헤더와 페이로드의 두 부분으로 구성됩니다.
헤더에는 alg(알고리즘) 및 typ(유형) 두 가지 속성이 포함되어 있습니다. 알고리즘은 HMAC, RSA 또는 기타 암호화 알고리즘을 사용할 수 있으며 유형은 JWT 토큰의 유형을 나타냅니다.
페이로드에도 몇 가지 속성이 있지만 이러한 속성은 표준 속성이 아니라 서버와 클라이언트 간의 통신에 사용되는 사용자 정의 속성입니다.
이제 구체적인 구현 과정을 살펴보겠습니다.
종속 라이브러리 설치
jwt-go 라이브러리를 사용하기 전에 먼저 설치해야 합니다.
go get github.com/dgrijalva/jwt-go
종속 라이브러리 가져오기
다음 명령을 사용하여 jwt-go 라이브러리를 가져옵니다. code:
import ( "github.com/dgrijalva/jwt-go" )
JWT 토큰 생성
Go 언어로 JWT 토큰을 생성하려면 페이로드에 서명해야 합니다. 서명 프로세스에서는 공개 키와 개인 키 쌍을 사용해야 하며, 여기서 공개 키는 합법성을 확인하는 데 사용됩니다. 토큰을 생성하며 개인 키는 토큰을 생성하는 데 사용됩니다. 보안을 보장하기 위해 구성 파일이나 환경 변수에 개인 키를 저장할 수 있습니다.
다음은 JWT 토큰 생성 예시입니다.
// 生成JWT Token func GenerateJwtToken() (string, error) { // 加载私钥 privateKeyByte, err := ioutil.ReadFile("jwtRS256.key") if err != nil { return "", err } privateKey, err := jwt.ParseRSAPrivateKeyFromPEM(privateKeyByte) if err != nil { return "", err } // 设置Payload claims := jwt.MapClaims{ "username": "admin", "exp": time.Now().Add(time.Hour * 24).Unix(), // 过期时间 } // 生成JWT Token token := jwt.NewWithClaims(jwt.SigningMethodRS256, claims) tokenString, err := token.SignedString(privateKey) if err != nil { return "", err } // 返回生成的Token return tokenString, nil }
위 예시에서는 개인 키를 로드한 후 페이로드를 설정하고 개인 키 서명을 사용하여 JWT 토큰을 생성한 후 마지막으로 JWT 토큰을 반환했습니다. .
JWT 토큰 확인
Go 언어에서 JWT 토큰의 적법성을 확인하려면 먼저 토큰에서 페이로드를 구문 분석한 다음 공개 키를 사용하여 토큰을 확인해야 합니다.
다음은 JWT 토큰 검증의 예입니다.
// 验证JWT Token func ParseJwtToken(tokenString string) (jwt.MapClaims, error) { // 加载公钥 publicKeyByte, err := ioutil.ReadFile("jwtRS256.pem") if err != nil { return nil, err } publicKey, err := jwt.ParseRSAPublicKeyFromPEM(publicKeyByte) if err != nil { return nil, err } // 解析JWT Token token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { _, ok := token.Method.(*jwt.SigningMethodRSA) if !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } return publicKey, nil }) if err != nil { return nil, err } if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { return claims, nil } return nil, fmt.Errorf("invalid token") }
위의 예에서는 공개 키를 로드한 다음 JWT 토큰을 구문 분석하고 공개 키를 사용하여 JWT 토큰의 적법성을 확인한 후 마지막으로 반환했습니다. 페이로드.
요약
jwt-go 라이브러리를 사용하여 Go 언어로 JWT 토큰 인증을 구현하는 것은 간단하고 효과적인 방법입니다. 경량 인증 및 권한 부여 방법인 JWT 토큰은 서버와 클라이언트 간에 정보를 안전하게 전송할 수 있습니다. jwt-go 라이브러리를 사용하면 JWT 토큰을 신속하게 생성, 확인 및 구문 분석하고 전송 프로세스 중에 보안을 보장할 수 있습니다.
위 내용은 jwt-go 라이브러리를 사용하여 Go 언어로 JWT 토큰 확인 및 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

Go Crawler Colly의 대기열 스레딩 문제는 Colly Crawler 라이브러리를 GO 언어로 사용하는 문제를 탐구합니다. � ...

Go Language의 문자열 인쇄의 차이 : println 및 String () 함수 사용 효과의 차이가 진행 중입니다 ...

Go Pointer Syntax 및 Viper Library 사용의 문제 해결 GO 언어로 프로그래밍 할 때 특히 포인터의 구문 및 사용법을 이해하는 것이 중요합니다.

GO 언어에서 구조를 정의하는 두 가지 방법 : VAR과 유형 키워드의 차이. 구조를 정의 할 때 Go Language는 종종 두 가지 다른 글쓰기 방법을 본다 : 첫째 ...

GO의지도 반복이 왜 모든 값이 마지막 요소가되게합니까? Go Language에서 인터뷰 질문에 직면했을 때, 당신은 종종지도를 만납니다 ...

Go Language Slice Index : 오류없이 단일 요소 슬라이스가 인덱스 1에서 차단하는 이유는 무엇입니까? Go Language에서 슬라이스는 바닥을 참조 할 수있는 유연한 데이터 구조입니다 ...
