Skip to content

Commit 02bf6ad

Browse files
zeripath6543Gusted
authored and
Stelios Malathouras
committed
Refactor jwt.StandardClaims to RegisteredClaims (go-gitea#18344)
* Refactor jwt.StandardClaims to RegisteredClaims go-jwt/jwt has deprecated the StandardClaims interface to use RegisteredClaims instead. This PR migrates to use this new format. Signed-off-by: Andrew Thornton <[email protected]> * Apply suggestions from code review Co-authored-by: Gusted <[email protected]> Co-authored-by: 6543 <[email protected]> Co-authored-by: Gusted <[email protected]>
1 parent 5332096 commit 02bf6ad

File tree

5 files changed

+19
-27
lines changed

5 files changed

+19
-27
lines changed

cmd/serv.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,10 +253,9 @@ func runServ(c *cli.Context) error {
253253

254254
now := time.Now()
255255
claims := lfs.Claims{
256-
// FIXME: we need to migrate to RegisteredClaims
257-
StandardClaims: jwt.StandardClaims{ // nolint
258-
ExpiresAt: now.Add(setting.LFS.HTTPAuthExpiry).Unix(),
259-
NotBefore: now.Unix(),
256+
RegisteredClaims: jwt.RegisteredClaims{
257+
ExpiresAt: jwt.NewNumericDate(now.Add(setting.LFS.HTTPAuthExpiry)),
258+
NotBefore: jwt.NewNumericDate(now),
260259
},
261260
RepoID: results.RepoID,
262261
Op: lfsVerb,

routers/web/auth/oauth.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,8 @@ func newAccessTokenResponse(grant *auth.OAuth2Grant, serverKey, clientKey oauth2
149149
accessToken := &oauth2.Token{
150150
GrantID: grant.ID,
151151
Type: oauth2.TypeAccessToken,
152-
// FIXME: Migrate to RegisteredClaims
153-
StandardClaims: jwt.StandardClaims{ //nolint
154-
ExpiresAt: expirationDate.AsTime().Unix(),
152+
RegisteredClaims: jwt.RegisteredClaims{
153+
ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
155154
},
156155
}
157156
signedAccessToken, err := accessToken.SignToken(serverKey)
@@ -163,14 +162,13 @@ func newAccessTokenResponse(grant *auth.OAuth2Grant, serverKey, clientKey oauth2
163162
}
164163

165164
// generate refresh token to request an access token after it expired later
166-
refreshExpirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.RefreshTokenExpirationTime * 60 * 60).AsTime().Unix()
165+
refreshExpirationDate := timeutil.TimeStampNow().Add(setting.OAuth2.RefreshTokenExpirationTime * 60 * 60).AsTime()
167166
refreshToken := &oauth2.Token{
168167
GrantID: grant.ID,
169168
Counter: grant.Counter,
170169
Type: oauth2.TypeRefreshToken,
171-
// FIXME: Migrate to RegisteredClaims
172-
StandardClaims: jwt.StandardClaims{ // nolint
173-
ExpiresAt: refreshExpirationDate,
170+
RegisteredClaims: jwt.RegisteredClaims{ // nolint
171+
ExpiresAt: jwt.NewNumericDate(refreshExpirationDate),
174172
},
175173
}
176174
signedRefreshToken, err := refreshToken.SignToken(serverKey)
@@ -207,11 +205,10 @@ func newAccessTokenResponse(grant *auth.OAuth2Grant, serverKey, clientKey oauth2
207205
}
208206

209207
idToken := &oauth2.OIDCToken{
210-
// FIXME: migrate to RegisteredClaims
211-
StandardClaims: jwt.StandardClaims{ //nolint
212-
ExpiresAt: expirationDate.AsTime().Unix(),
208+
RegisteredClaims: jwt.RegisteredClaims{
209+
ExpiresAt: jwt.NewNumericDate(expirationDate.AsTime()),
213210
Issuer: setting.AppURL,
214-
Audience: app.ClientID,
211+
Audience: []string{app.ClientID},
215212
Subject: fmt.Sprint(grant.UserID),
216213
},
217214
Nonce: grant.Nonce,
@@ -329,8 +326,7 @@ func IntrospectOAuth(ctx *context.Context) {
329326
var response struct {
330327
Active bool `json:"active"`
331328
Scope string `json:"scope,omitempty"`
332-
// FIXME: Migrate to RegisteredClaims
333-
jwt.StandardClaims //nolint
329+
jwt.RegisteredClaims
334330
}
335331

336332
form := web.GetForm(ctx).(*forms.IntrospectTokenForm)
@@ -344,7 +340,7 @@ func IntrospectOAuth(ctx *context.Context) {
344340
response.Active = true
345341
response.Scope = grant.Scope
346342
response.Issuer = setting.AppURL
347-
response.Audience = app.ClientID
343+
response.Audience = []string{app.ClientID}
348344
response.Subject = fmt.Sprint(grant.UserID)
349345
}
350346
}

services/auth/oauth2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func CheckOAuthAccessToken(accessToken string) int64 {
4444
if token.Type != oauth2.TypeAccessToken {
4545
return 0
4646
}
47-
if token.ExpiresAt < time.Now().Unix() || token.IssuedAt > time.Now().Unix() {
47+
if token.ExpiresAt.Before(time.Now()) || token.IssuedAt.After(time.Now()) {
4848
return 0
4949
}
5050
return grant.UserID

services/auth/source/oauth2/token.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ type Token struct {
3737
GrantID int64 `json:"gnt"`
3838
Type TokenType `json:"tt"`
3939
Counter int64 `json:"cnt,omitempty"`
40-
// FIXME: Migrate to registered claims
41-
jwt.StandardClaims
40+
jwt.RegisteredClaims
4241
}
4342

4443
// ParseToken parses a signed jwt string
@@ -62,16 +61,15 @@ func ParseToken(jwtToken string, signingKey JWTSigningKey) (*Token, error) {
6261

6362
// SignToken signs the token with the JWT secret
6463
func (token *Token) SignToken(signingKey JWTSigningKey) (string, error) {
65-
token.IssuedAt = time.Now().Unix()
64+
token.IssuedAt = jwt.NewNumericDate(time.Now())
6665
jwtToken := jwt.NewWithClaims(signingKey.SigningMethod(), token)
6766
signingKey.PreProcessToken(jwtToken)
6867
return jwtToken.SignedString(signingKey.SignKey())
6968
}
7069

7170
// OIDCToken represents an OpenID Connect id_token
7271
type OIDCToken struct {
73-
// FIXME: Migrate to RegisteredClaims
74-
jwt.StandardClaims
72+
jwt.RegisteredClaims
7573
Nonce string `json:"nonce,omitempty"`
7674

7775
// Scope profile
@@ -93,7 +91,7 @@ type OIDCToken struct {
9391

9492
// SignToken signs an id_token with the (symmetric) client secret key
9593
func (token *OIDCToken) SignToken(signingKey JWTSigningKey) (string, error) {
96-
token.IssuedAt = time.Now().Unix()
94+
token.IssuedAt = jwt.NewNumericDate(time.Now())
9795
jwtToken := jwt.NewWithClaims(signingKey.SigningMethod(), token)
9896
signingKey.PreProcessToken(jwtToken)
9997
return jwtToken.SignedString(signingKey.SignKey())

services/lfs/server.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ type Claims struct {
4545
RepoID int64
4646
Op string
4747
UserID int64
48-
// FIXME: Migrate to RegisteredClaims
49-
jwt.StandardClaims
48+
jwt.RegisteredClaims
5049
}
5150

5251
// DownloadLink builds a URL to download the object.

0 commit comments

Comments
 (0)