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 |