Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
MKCLOS
Core Development Platform
corepkgv2
Commits
f4d7a512
Commit
f4d7a512
authored
4 years ago
by
Akshay Bharambe
Browse files
Options
Downloads
Patches
Plain Diff
Remove: Dead code
parent
32bcafe6
Branches
Branches containing commit
Tags
Tags containing commit
2 merge requests
!210
Staging mepdeployment05072020
,
!200
Add: Session control
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
authmdl/jwtmdl/jwtmdl.go
+12
-86
authmdl/jwtmdl/jwtmdl.go
authmdl/jwtmdl/jwtmdl_fasthttp.go
+3
-65
authmdl/jwtmdl/jwtmdl_fasthttp.go
authmdl/jwtmdl/jwtmdl_http.go
+0
-39
authmdl/jwtmdl/jwtmdl_http.go
authmdl/jwtmdl/options.go
+4
-0
authmdl/jwtmdl/options.go
with
19 additions
and
190 deletions
authmdl/jwtmdl/jwtmdl.go
+
12
−
86
View file @
f4d7a512
package
jwtmdl
import
(
"fmt"
"strings"
"time"
...
...
@@ -22,44 +21,6 @@ var keyFunc = func(key string) jwt.Keyfunc {
}
}
// // DecodeTokenWithJWTKey decode token
// func DecodeTokenWithJWTKey(req *http.Request, jwtKey string) (jwt.MapClaims, error) {
// token, err := request.ParseFromRequest(req, request.OAuth2Extractor, func(token *jwt.Token) (interface{}, error) {
// b := ([]byte(jwtKey))
// return b, nil
// })
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", errormdl.CheckErr(err))
// return nil, errormdl.CheckErr(err)
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// return claims, nil
// }
// // DecodeToken decode token
// func DecodeToken(req *http.Request) (jwt.MapClaims, error) {
// token, err := request.ParseFromRequest(req, request.OAuth2Extractor, func(token *jwt.Token) (interface{}, error) {
// b := ([]byte(GlobalJWTKey))
// return b, nil
// })
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", errormdl.CheckErr(err))
// return nil, errormdl.CheckErr(err)
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// return claims, nil
// }
type
jwtCustomClaim
struct
{
UserID
string
`json:"userId"`
SessionId
string
`json:"sessionId,omitempty"`
...
...
@@ -75,6 +36,16 @@ func generate(claims jwtCustomClaim, key string) (string, error) {
return
jwt
.
NewWithClaims
(
jwt
.
SigningMethodHS256
,
claims
)
.
SignedString
([]
byte
(
key
))
}
// extract return token from header string
func
extract
(
tokenReq
string
)
(
string
,
error
)
{
tokenArray
:=
strings
.
Split
(
tokenReq
,
"Bearer"
)
if
len
(
tokenArray
)
<=
1
{
return
""
,
errormdl
.
Wrap
(
"Provided JWT token is nil or invalid "
)
}
return
strings
.
Trim
(
tokenArray
[
1
],
" "
),
nil
}
// decode accepts a parsed token and error from parse operation.
func
decode
(
token
*
jwt
.
Token
,
err
error
)
(
jwt
.
MapClaims
,
error
)
{
if
err
!=
nil
{
...
...
@@ -131,23 +102,6 @@ func GenerateTokenWithOptions(args ...Option) (string, error) {
// GenerateToken generates JWT token from Login object
func
GenerateToken
(
loginID
string
,
groups
[]
string
,
clientIP
string
,
metadata
gjson
.
Result
,
expirationTime
time
.
Duration
)
(
string
,
error
)
{
// claims := jwtCustomClaim{
// UserID: loginID,
// Groups: groups,
// ClientIP: clientIP,
// Metadata: metadata.String(),
// StandardClaims: jwt.StandardClaims{
// ExpiresAt: time.Now().Add(expirationTime).Unix(),
// },
// }
// // Create token with claims
// token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
// // Generate encoded token and send it as response.
// t, err := token.SignedString([]byte(GlobalJWTKey))
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError(err)
// return t, errormdl.CheckErr(err)
// }
return
GenerateTokenWithJWTKey
(
loginID
,
groups
,
clientIP
,
metadata
,
expirationTime
,
GlobalJWTKey
)
}
...
...
@@ -163,44 +117,16 @@ func GenerateTokenWithJWTKey(loginID string, groups []string, clientIP string, m
},
}
// // Create token with claims
// token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
// // Generate encoded token and send it as response.
// t, err := token.SignedString([]byte(JWTKey))
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError(err)
// return t, errormdl.CheckErr(err)
// }
return
generate
(
claims
,
JWTKey
)
}
//GeneratePricipleObjUsingToken GeneratePricipleObjUsingToken
func
GeneratePricipleObjUsingToken
(
tokenReq
string
,
jwtKey
string
)
(
jwt
.
MapClaims
,
error
)
{
tokenArray
:=
strings
.
Split
(
tokenReq
,
"Bearer"
)
if
len
(
tokenArray
)
<=
1
{
return
nil
,
errormdl
.
Wrap
(
"Provided JWT token is nil or invalid "
)
}
tokenFromRequest
:=
strings
.
Trim
(
tokenArray
[
1
],
" "
)
// get data i.e.Claims from token
token
,
err
:=
jwt
.
Parse
(
tokenFromRequest
,
func
(
token
*
jwt
.
Token
)
(
interface
{},
error
)
{
// Don't forget to validate the alg is what you expect:
_
,
ok
:=
token
.
Method
.
(
*
jwt
.
SigningMethodHMAC
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected signing method: %v"
,
token
.
Header
[
"alg"
])
}
return
[]
byte
(
jwtKey
),
nil
})
token
,
err
:=
extract
(
tokenReq
)
if
err
!=
nil
{
loggermdl
.
LogError
(
"Error while parsing JWT Token: "
,
err
)
return
nil
,
err
}
claims
,
ok
:=
token
.
Claims
.
(
jwt
.
MapClaims
)
if
!
errormdl
.
CheckBool1
(
ok
)
{
loggermdl
.
LogError
(
"Error while parsing claims to MapClaims"
)
return
nil
,
errormdl
.
Wrap
(
"Error while getting claims"
)
}
return
claims
,
nil
return
decode
(
jwt
.
Parse
(
token
,
keyFunc
(
jwtKey
)))
}
This diff is collapsed.
Click to expand it.
authmdl/jwtmdl/jwtmdl_fasthttp.go
+
3
−
65
View file @
f4d7a512
...
...
@@ -3,84 +3,22 @@
package
jwtmdl
import
(
"strings"
jwt
"github.com/dgrijalva/jwt-go"
"github.com/valyala/fasthttp"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl"
)
// DecodeTokenWithJWTKey decode token
func
DecodeTokenWithJWTKey
(
req
*
fasthttp
.
Request
,
jwtKey
string
)
(
jwt
.
MapClaims
,
error
)
{
tokenFromRequest
:=
string
(
req
.
Header
.
Peek
(
"Authorization"
))
tokenArray
:=
strings
.
Split
(
tokenFromRequest
,
"Bearer"
)
if
len
(
tokenArray
)
<=
1
{
return
nil
,
errormdl
.
Wrap
(
"Provided JWT token is nil or invalid "
)
tokenFromRequest
,
err
:=
extract
(
string
(
req
.
Header
.
Peek
(
"Authorization"
)))
if
err
!=
nil
{
return
nil
,
err
}
tokenFromRequest
=
strings
.
Trim
(
tokenArray
[
1
],
" "
)
// // get data i.e.Claims from token
// token, err := jwt.Parse(tokenFromRequest, func(token *jwt.Token) (interface{}, error) {
// // Don't forget to validate the alg is what you expect:
// _, ok := token.Method.(*jwt.SigningMethodHMAC)
// if !ok {
// return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
// }
// return []byte(jwtKey), nil
// })
// if err != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", err)
// return nil, err
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// // validate user session from session id present in token
// if err := sessionmdl.ValidateSessionFromToken(claims); err != nil {
// loggermdl.LogError("session validation failed with err:", err)
// return nil, sessionmdl.ErrSessionValidationFailed
// }
// return claims, nil
return
decode
(
jwt
.
Parse
(
tokenFromRequest
,
keyFunc
(
jwtKey
)))
}
// DecodeToken decode token
func
DecodeToken
(
req
*
fasthttp
.
Request
)
(
jwt
.
MapClaims
,
error
)
{
// tokenFromRequest := string(req.Header.Peek("Authorization"))
// tokenArray := strings.Split(tokenFromRequest, "Bearer")
// if len(tokenArray) <= 1 {
// return nil, errormdl.Wrap("Provided JWT token is nil or invalid ")
// }
// tokenFromRequest = strings.Trim(tokenArray[1], " ")
// // get data i.e.Claims from token
// token, err := jwt.Parse(tokenFromRequest, func(token *jwt.Token) (interface{}, error) {
// // Don't forget to validate the alg is what you expect:
// _, ok := token.Method.(*jwt.SigningMethodHMAC)
// if !ok {
// return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
// }
// return []byte(GlobalJWTKey), nil
// })
// if err != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", err)
// return nil, err
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// return claims, nil
return
DecodeTokenWithJWTKey
(
req
,
GlobalJWTKey
)
}
This diff is collapsed.
Click to expand it.
authmdl/jwtmdl/jwtmdl_http.go
+
0
−
39
View file @
f4d7a512
...
...
@@ -12,49 +12,10 @@ import (
// DecodeTokenWithJWTKey decode token
func
DecodeTokenWithJWTKey
(
req
*
http
.
Request
,
jwtKey
string
)
(
jwt
.
MapClaims
,
error
)
{
// token, err := request.ParseFromRequest(req, request.OAuth2Extractor, func(token *jwt.Token) (interface{}, error) {
// b := ([]byte(jwtKey))
// return b, nil
// })
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", errormdl.CheckErr(err))
// return nil, errormdl.CheckErr(err)
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// // validate user session from session id present in token
// if err := sessionmdl.ValidateSessionFromToken(claims); err != nil {
// loggermdl.LogError("session validation failed with err:", err)
// return nil, sessionmdl.ErrSessionValidationFailed
// }
// return claims, nil
return
decode
(
request
.
ParseFromRequest
(
req
,
request
.
OAuth2Extractor
,
keyFunc
(
jwtKey
)))
}
// DecodeToken decode token
func
DecodeToken
(
req
*
http
.
Request
)
(
jwt
.
MapClaims
,
error
)
{
// token, err := request.ParseFromRequest(req, request.OAuth2Extractor, func(token *jwt.Token) (interface{}, error) {
// b := ([]byte(GlobalJWTKey))
// return b, nil
// })
// if errormdl.CheckErr(err) != nil {
// loggermdl.LogError("Error while parsing JWT Token: ", errormdl.CheckErr(err))
// return nil, errormdl.CheckErr(err)
// }
// claims, ok := token.Claims.(jwt.MapClaims)
// if !errormdl.CheckBool1(ok) {
// loggermdl.LogError("Error while parsing claims to MapClaims")
// return nil, errormdl.Wrap("Error while getting claims")
// }
// return claims, nil
return
DecodeTokenWithJWTKey
(
req
,
GlobalJWTKey
)
}
This diff is collapsed.
Click to expand it.
authmdl/jwtmdl/options.go
+
4
−
0
View file @
f4d7a512
...
...
@@ -18,6 +18,7 @@ type Options struct {
type
Option
func
(
*
Options
)
// WithKey uses provided jwt key for token generation
func
WithKey
(
k
string
)
Option
{
return
func
(
args
*
Options
)
{
args
.
Key
=
k
...
...
@@ -30,6 +31,7 @@ func WithUserID(uid string) Option {
}
}
// WithSession enables session validation on jwt decode. Required fields must not be empty.
func
WithSession
(
sid
,
sessionFor
string
)
Option
{
return
func
(
args
*
Options
)
{
args
.
Session
=
sessionmdl
.
Session
{
...
...
@@ -45,6 +47,7 @@ func WithClientIP(ip string) Option {
}
}
// WithMetaData embeds provided data in token. It is available againt `metadata` key. **It must be a valid json**
func
WithMetaData
(
data
string
)
Option
{
return
func
(
args
*
Options
)
{
args
.
Metadata
=
data
...
...
@@ -57,6 +60,7 @@ func WithGroups(gs []string) Option {
}
}
// WithExpiration adds provided expiration to jwt token. Use `0` or ignore this option to generate a token witout expiry.
func
WithExpiration
(
e
time
.
Duration
)
Option
{
return
func
(
args
*
Options
)
{
if
e
==
0
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets