fix jwt token authorization

This commit is contained in:
Joel Schmid 2021-06-05 19:06:45 +02:00
parent 858421b9d8
commit 4e3fe0ce0b
2 changed files with 7 additions and 3 deletions

View file

@ -22,6 +22,7 @@ var bearerTokenRegex *regexp.Regexp = regexp.MustCompile(bearerTokenRegexPattern
type customClaims struct { type customClaims struct {
Username string `json:"username"` Username string `json:"username"`
Roles []string `json:"role"`
jwt.StandardClaims jwt.StandardClaims
} }
@ -111,6 +112,8 @@ func (api *weatherRestApi) generateToken(w http.ResponseWriter, r *http.Request)
StandardClaims: jwt.StandardClaims{ StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), ExpiresAt: time.Now().Add(time.Minute * 30).Unix(),
}, },
Username: "Joel",
Roles: []string{"role 1", "role 2"},
} }
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
@ -307,9 +310,10 @@ func (api *weatherRestApi) IsAuthorized(next http.Handler) http.Handler {
jwtFromHeader := bearerTokenRegex.FindStringSubmatch(authorizationHeader[0])[1] jwtFromHeader := bearerTokenRegex.FindStringSubmatch(authorizationHeader[0])[1]
var claims customClaims
token, err := jwt.ParseWithClaims( token, err := jwt.ParseWithClaims(
jwtFromHeader, jwtFromHeader,
&customClaims{}, &claims,
func(token *jwt.Token) (interface{}, error) { func(token *jwt.Token) (interface{}, error) {
return []byte(api.config.JwtTokenSecret), nil return []byte(api.config.JwtTokenSecret), nil
}, },

View file

@ -65,7 +65,7 @@ var RestConfiguration = RestConfig{
AccessControlAllowOriginHeader: getEnv("ACCESS_CONTROL_ALLOW_ORIGIN_HEADER", "*"), AccessControlAllowOriginHeader: getEnv("ACCESS_CONTROL_ALLOW_ORIGIN_HEADER", "*"),
UseTokenAuthorization: getEnvBool("USE_TOKEN_AUTHORIZATION", false), UseTokenAuthorization: getEnvBool("USE_TOKEN_AUTHORIZATION", false),
AllowTokenGeneration: getEnvBool("ALLOW_TOKEN_GENERATION", false), AllowTokenGeneration: getEnvBool("ALLOW_TOKEN_GENERATION", false),
JwtTokenSecret: getEnv("JWT_TOKEN_SECRET", "jwt-token-secret"), JwtTokenSecret: getEnv("JWT_TOKEN_SECRET", "my_token_string"),
} }
var AllowUnregisteredSensors = getEnvBool("ALLOW_UNREGISTERED_SENSORS", false) var AllowUnregisteredSensors = getEnvBool("ALLOW_UNREGISTERED_SENSORS", false)