Skip to content

Commit 76ef7ea

Browse files
leetalarekkas
authored andcommitted
vendor: jwt-go is now v3.0.0 (#77)
Signed-off-by: Alexander Widerberg <alexander.widerberg@cybercom.com>
1 parent 7faee6b commit 76ef7ea

File tree

12 files changed

+121
-202
lines changed

12 files changed

+121
-202
lines changed

glide.lock

Lines changed: 17 additions & 122 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import:
55
- package: github.com/asaskevich/govalidator
66
version: ~4.0.0
77
- package: github.com/dgrijalva/jwt-go
8-
version: ~2.7.0
8+
version: ~3.0.0
99
- package: github.com/golang/mock
1010
subpackages:
1111
- gomock
@@ -38,3 +38,13 @@ testImport:
3838
subpackages:
3939
- assert
4040
- require
41+
- package: gopkg.in/gemnasium/logrus-airbrake-hook.v2
42+
version: ^2.0.0
43+
- package: gopkg.in/airbrake/gobrake.v2
44+
version: ^2.0.6
45+
- package: github.com/onsi/ginkgo
46+
version: ^1.2.0
47+
- package: github.com/elazarl/goproxy
48+
version: ^1.0.0
49+
- package: github.com/onsi/gomega
50+
version: ^1.0.0

handler/oauth2/strategy_jwt.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ func (h *RS256JWTStrategy) validate(token string) error {
6565
return err
6666
}
6767

68-
claims := jwt.JWTClaimsFromMap(t.Claims)
69-
if claims.IsNotYetValid() || claims.IsExpired() {
68+
// validate the token
69+
if err = t.Claims.Valid(); err != nil {
7070
return errors.New("Token claims did not validate")
7171
}
7272

@@ -79,6 +79,6 @@ func (h *RS256JWTStrategy) generate(requester fosite.Requester) (string, string,
7979
} else if jwtSession.GetJWTClaims() == nil {
8080
return "", "", errors.New("GetTokenClaims() must not be nil")
8181
} else {
82-
return h.RS256JWTStrategy.Generate(jwtSession.GetJWTClaims(), jwtSession.GetJWTHeader())
82+
return h.RS256JWTStrategy.Generate(jwtSession.GetJWTClaims().ToMapClaims(), jwtSession.GetJWTHeader())
8383
}
8484
}

handler/openid/strategy_jwt.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,6 @@ func (h DefaultStrategy) GenerateIDToken(_ context.Context, _ *http.Request, req
9292
claims.Audience = requester.GetClient().GetID()
9393
claims.IssuedAt = time.Now()
9494

95-
token, _, err = h.RS256JWTStrategy.Generate(claims, sess.IDTokenHeaders())
95+
token, _, err = h.RS256JWTStrategy.Generate(claims.ToMapClaims(), sess.IDTokenHeaders())
9696
return token, err
9797
}

token/jwt/claims.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package jwt
22

3-
import (
4-
"time"
5-
)
3+
import "time"
64

5+
// Mapper is the interface used internally to map key-value pairs
76
type Mapper interface {
87
ToMap() map[string]interface{}
98
Add(key string, value interface{})
109
Get(key string) interface{}
1110
}
1211

12+
// ToString will return a string representation of a map
1313
func ToString(i interface{}) string {
1414
if i == nil {
1515
return ""
@@ -22,6 +22,7 @@ func ToString(i interface{}) string {
2222
return ""
2323
}
2424

25+
// ToTime will try to convert a given input to a time.Time structure
2526
func ToTime(i interface{}) time.Time {
2627
if i == nil {
2728
return time.Time{}
@@ -36,6 +37,7 @@ func ToTime(i interface{}) time.Time {
3637
return time.Time{}
3738
}
3839

40+
// Filter will filter out elemets based on keys in a given input map na key-slice
3941
func Filter(elements map[string]interface{}, keys ...string) map[string]interface{} {
4042
var keyIdx = make(map[string]bool)
4143
var result = make(map[string]interface{})
@@ -53,6 +55,7 @@ func Filter(elements map[string]interface{}, keys ...string) map[string]interfac
5355
return result
5456
}
5557

58+
// Copy will copy all elements in a map and return a new representational map
5659
func Copy(elements map[string]interface{}) (result map[string]interface{}) {
5760
result = make(map[string]interface{}, len(elements))
5861
for k, v := range elements {

token/jwt/claims_id_token.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package jwt
22

3-
import "time"
3+
import (
4+
"time"
45

6+
"github.com/dgrijalva/jwt-go"
7+
)
8+
9+
// IDTokenClaims represent the claims used in open id connect requests
510
type IDTokenClaims struct {
611
Issuer string
712
Subject string
@@ -15,6 +20,7 @@ type IDTokenClaims struct {
1520
Extra map[string]interface{}
1621
}
1722

23+
// ToMap will transform the headers to a map structure
1824
func (c *IDTokenClaims) ToMap() map[string]interface{} {
1925
var ret = Copy(c.Extra)
2026
ret["sub"] = c.Subject
@@ -33,19 +39,27 @@ func (c *IDTokenClaims) ToMap() map[string]interface{} {
3339
if !c.AuthTime.IsZero() {
3440
ret["auth_time"] = c.AuthTime.Unix()
3541
}
36-
ret["iat"] = c.IssuedAt.Unix()
37-
ret["exp"] = c.ExpiresAt.Unix()
42+
43+
ret["iat"] = float64(c.IssuedAt.Unix())
44+
ret["exp"] = float64(c.ExpiresAt.Unix())
3845
return ret
3946

4047
}
4148

49+
// Add will add a key-value pair to the extra field
4250
func (c *IDTokenClaims) Add(key string, value interface{}) {
4351
if c.Extra == nil {
4452
c.Extra = make(map[string]interface{})
4553
}
4654
c.Extra[key] = value
4755
}
4856

57+
// Get will get a value from the extra field based on a given key
4958
func (c *IDTokenClaims) Get(key string) interface{} {
5059
return c.ToMap()[key]
5160
}
61+
62+
// ToMapClaims will return a jwt-go MapClaims representaion
63+
func (c IDTokenClaims) ToMapClaims() jwt.MapClaims {
64+
return c.ToMap()
65+
}

token/jwt/claims_id_token_test.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,21 @@ var idTokenClaims = &IDTokenClaims{
2323
},
2424
}
2525

26-
func TestIDTokenClaimsToMapSetsID(t *testing.T) {
27-
assert.NotEmpty(t, (&JWTClaims{}).ToMap()["jti"])
28-
}
29-
3026
func TestIDTokenAssert(t *testing.T) {
31-
assert.False(t, (&JWTClaims{ExpiresAt: time.Now().Add(time.Hour)}).IsExpired())
32-
assert.True(t, (&JWTClaims{ExpiresAt: time.Now().Add(-time.Hour)}).IsExpired())
33-
assert.True(t, (&JWTClaims{NotBefore: time.Now().Add(time.Hour)}).IsNotYetValid())
34-
assert.False(t, (&JWTClaims{NotBefore: time.Now().Add(-time.Hour)}).IsNotYetValid())
27+
assert.Nil(t, (&IDTokenClaims{ExpiresAt: time.Now().Add(time.Hour)}).
28+
ToMapClaims().Valid())
29+
assert.NotNil(t, (&IDTokenClaims{ExpiresAt: time.Now().Add(-time.Hour)}).
30+
ToMapClaims().Valid())
3531
}
3632

3733
func TestIDTokenClaimsToMap(t *testing.T) {
3834
assert.Equal(t, map[string]interface{}{
3935
"sub": idTokenClaims.Subject,
40-
"iat": idTokenClaims.IssuedAt.Unix(),
36+
"iat": float64(idTokenClaims.IssuedAt.Unix()),
4137
"iss": idTokenClaims.Issuer,
4238
"aud": idTokenClaims.Audience,
4339
"nonce": idTokenClaims.Nonce,
44-
"exp": idTokenClaims.ExpiresAt.Unix(),
40+
"exp": float64(idTokenClaims.ExpiresAt.Unix()),
4541
"foo": idTokenClaims.Extra["foo"],
4642
"baz": idTokenClaims.Extra["baz"],
4743
"at_hash": idTokenClaims.AccessTokenHash,

0 commit comments

Comments
 (0)