Skip to content

Commit

Permalink
fix: incorrect jwt parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
luizfonseca committed May 7, 2024
1 parent 6577db8 commit 7093787
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/luizfonseca/traefik-github-oauth-plugin

go 1.21.4
go 1.22.1

require (
github.com/go-chi/render v1.0.3
Expand Down
9 changes: 8 additions & 1 deletion internal/pkg/jwt/jwt.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,17 @@ func ParseTokenString(tokenString, key string) (*PayloadUser, error) {
return nil, err
}
if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
teamFromClaims := claims["teams"].([]interface{})
teams := make([]string, len(teamFromClaims))

for i, v := range teamFromClaims {
teams[i] = v.(string)
}

return &PayloadUser{
Id: claims["id"].(string),
Login: claims["login"].(string),
Teams: claims["teams"].([]string),
Teams: teams,
}, nil
} else {
return nil, fmt.Errorf("invalid token")
Expand Down
9 changes: 6 additions & 3 deletions internal/pkg/jwt/jwt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"github.com/stretchr/testify/assert"
)

var testTeams = []string{"team1", "team2"}

const (
id = "12345"
login = "testuser"
Expand All @@ -14,7 +16,7 @@ const (

func TestGenerateJwtTokenString(t *testing.T) {
// execution
tokenString, err := GenerateJwtTokenString(id, login, key)
tokenString, err := GenerateJwtTokenString(id, login, testTeams, key)

// assertion
assert.NoError(t, err)
Expand All @@ -23,7 +25,7 @@ func TestGenerateJwtTokenString(t *testing.T) {

func TestParseTokenString(t *testing.T) {
// setup
tokenString, _ := GenerateJwtTokenString(id, login, key)
tokenString, _ := GenerateJwtTokenString(id, login, testTeams, key)

// execution
payload, err := ParseTokenString(tokenString, key)
Expand All @@ -32,6 +34,7 @@ func TestParseTokenString(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, id, payload.Id)
assert.Equal(t, login, payload.Login)
assert.Equal(t, testTeams, payload.Teams)
}

func TestParseTokenString_InvalidToken(t *testing.T) {
Expand All @@ -48,7 +51,7 @@ func TestParseTokenString_InvalidToken(t *testing.T) {

func TestParseTokenString_InvalidKey(t *testing.T) {
// setup
tokenString, _ := GenerateJwtTokenString(id, login, key)
tokenString, _ := GenerateJwtTokenString(id, login, testTeams, key)
invalidKey := "invalidkey"

// execution
Expand Down

0 comments on commit 7093787

Please sign in to comment.