go get github.com/dgrijalva/jwt-go


// SigningMethod, Claims를 가지고 Token객체 생성
func NewWithClaims(method SigningMethod, claims Claims) * Token

 

// 알고리즘 유형을 선택하여 해당 SigningMethod를 가져와 준다.
func GetSigningMethod(alg string) (method SigningMethod)

 

// signature 인증 및 검증함수를 가진 interface
type SigningMethod interface {
    Verify(signingString, signature string, key interface{}) error
    Sign(signingString string, key interface{}) (string, error)

    Alg() stirng
}

// Token객체로부터 key값으로 서명된 string token을 가져옵니다.

func (t *Token) SignedString(key interface{}) (string, error)

 

// Token객체, 

type Token struct {

    Raw string //원시 토큰, Pupulated when token is parsed

    method SigningMethod //서명에 사용할 interface

    Header map[string]interface{} //jwt의 첫부분

    Claims Claims // jwt의 두번째 부분

    Signature string // jwt의 세번째 부분, Pupulated when token is parsed

    Valid bool // 토큰의 유효 여부

}

 

// tokenString과 keyfunc을 이용해 Token 객체를 생성합니다.

func Parse(tokenString string, keyFunc Keyfunc) (*Token, error)

 

// 위 함수에서 추가로 claims 값을 가져오는 함수입니다. 

func ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error)

 

// 위 Parse함수에서 tokenstring을 이용하여 token을 생성해 주는데, 그 토근을 사용자가 넘겨준 keyFunc에 넣어,

// 사용자가 정의한 keyFunc의 소스를 따라 에러처리를 한다.  keyFunc가 이용되는 부분이다. 검증을 위해 쓰인다.

// 아래 소스처럼, 사용자가 정한 에러의 기준에 따라 에러를 배출하고 그것을 처리하게 되어있다.

func Keyfunc (*Token)(interface{}, error)

if key, err = keyFunc(token); err != nil {
		// keyFunc returned an error
		if ve, ok := err.(*ValidationError); ok {
			return token, ve
		}
		return token, &ValidationError{Inner: err, Errors: ValidationErrorUnverifiable}
	}

Parse 예시)

tkn, err := jwt.ParseWithClaims(tknStr, claims, func(token *jwt.Token) (interface{}, error) {
		return jwtKey, nil
	})

 

'language, framework, library > golang' 카테고리의 다른 글

[Golang] basics  (0) 2019.06.10
[Golang] 문법 오류들  (0) 2019.06.07
[Golang] negroni session  (0) 2019.05.24
[Golang] vscode에서 tmpl확장자 사용하기  (0) 2019.05.23
[Golang] 암호화  (0) 2019.05.23

+ Recent posts