>백엔드 개발 >Golang >토큰 서명 후 JWT 청구가 보존되지 않음

토큰 서명 후 JWT 청구가 보존되지 않음

王林
王林앞으로
2024-02-14 09:40:09651검색

令牌签名后 JWT 声明不保留

php 편집기 Banana는 이 기사에서 JWT(JSON 웹 토큰)의 중요한 개념인 토큰 서명을 소개합니다. JWT는 웹 애플리케이션 간에 정보를 전달하기 위한 보안 표준입니다. JWT에서 토큰 서명은 토큰의 무결성과 신뢰성을 보호하는 메커니즘입니다. 토큰이 서명되면 토큰의 변조 또는 위조가 즉시 감지됩니다. 그러나 때로는 특정 상황에서 JWT 클레임의 서명을 유지하지 않아야 할 수도 있으며, 이 문서에서는 이 요구 사항을 달성하는 방법을 자세히 설명합니다.

질문 내용

다음과 같은 코드가 있습니다. 저는 사용자 정의 클레임을 사용하여 json 웹 토큰을 생성하고 있습니다(golang-jwt 사용). 문제는 키(메소드 = hs256)를 사용하여 토큰에 서명한 다음 토큰을 구문 분석할 때 클레임이 변경된다는 것입니다. 내가 무슨 실수를 했나요?

코드:

으아아아

출력

package main

import (
    "fmt"
    "time"

    "github.com/golang-jwt/jwt/v4"
)

type mycustomclaims struct {
    userid int
    jwt.registeredclaims
}

func (app *config) generatejwt(userid int) {

    //code to generate jwt
    jt := jwt.newwithclaims(jwt.signingmethodhs256, mycustomclaims{
        userid,
        jwt.registeredclaims{
            expiresat: jwt.newnumericdate(time.now().add(3 * time.hour)),
            issuedat:  jwt.newnumericdate(time.now()),
        },
    })

    fmt.println("what was put", jt.claims.(mycustomclaims).userid)
    token, _ := jt.signedstring(app.secret)

    //code to check whether claims are retained
    parsed_token, _ := jwt.parsewithclaims(token, &mycustomclaims{}, func(t *jwt.token) (interface{}, error) {
        return app.secret, nil
    })

    fmt.println("what was parsed", parsed_token.claims.(*mycustomclaims).userid)

}

해결 방법

사용자 ID 필드를 내보내야 합니다(대문자로 시작해야 함). 내보내지 않은 필드는 json으로 인코딩될 수 없습니다.

으아아아

위 내용은 토큰 서명 후 JWT 청구가 보존되지 않음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제