@@ -17,10 +17,12 @@ package session
1717
1818import (
1919 "errors"
20+ "fmt"
2021 "github.com/MicahParks/keyfunc"
2122 "github.com/golang-jwt/jwt/v4"
2223 sterrors "github.com/supertokens/supertokens-golang/recipe/session/errors"
2324 "github.com/supertokens/supertokens-golang/recipe/session/sessmodels"
25+ "github.com/supertokens/supertokens-golang/supertokens"
2426 "strings"
2527)
2628
@@ -41,6 +43,7 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
4143 if jwtInfo .Version >= 3 {
4244 parsedToken , parseError := jwt .Parse (jwtInfo .RawTokenString , jwks .Keyfunc )
4345 if parseError != nil {
46+ supertokens .LogDebugMessage (fmt .Sprintf ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access token parsing failed - %s" , parseError ))
4447 return nil , sterrors.TryRefreshTokenError {
4548 Msg : parseError .Error (),
4649 }
@@ -49,6 +52,7 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
4952 if parsedToken .Valid {
5053 claims , ok := parsedToken .Claims .(jwt.MapClaims )
5154 if ! ok {
55+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access token claims are invalid" )
5256 return nil , sterrors.TryRefreshTokenError {
5357 Msg : "Invalid JWT claims" ,
5458 }
@@ -81,6 +85,7 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
8185 }
8286
8387 if parseErr != nil {
88+ supertokens .LogDebugMessage (fmt .Sprintf ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access token parsing failed - %s" , parseErr ))
8489 return nil , sterrors.TryRefreshTokenError {
8590 Msg : parseErr .Error (),
8691 }
@@ -89,6 +94,7 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
8994 if parsedToken .Valid {
9095 claims , ok := parsedToken .Claims .(jwt.MapClaims )
9196 if ! ok {
97+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access token claims are invalid" )
9298 return nil , sterrors.TryRefreshTokenError {
9399 Msg : "Invalid JWT claims" ,
94100 }
@@ -107,13 +113,15 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
107113 }
108114
109115 if payload == nil {
116+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access token JWT has no payload" )
110117 return nil , sterrors.TryRefreshTokenError {
111118 Msg : "Invalid JWT" ,
112119 }
113120 }
114121
115122 err := ValidateAccessTokenStructure (payload , jwtInfo .Version )
116123 if err != nil {
124+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because ValidateAccessTokenStructure returned an error" )
117125 return nil , sterrors.TryRefreshTokenError {
118126 Msg : err .Error (),
119127 }
@@ -142,12 +150,14 @@ func GetInfoFromAccessToken(jwtInfo sessmodels.ParsedJWTInfo, jwks keyfunc.JWKS,
142150 antiCsrfToken := sanitizeStringInput (payload ["antiCsrfToken" ])
143151
144152 if antiCsrfToken == nil && doAntiCsrfCheck {
153+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access does not contain the anti-csrf token." )
145154 return nil , sterrors.TryRefreshTokenError {
146155 Msg : "Access token does not contain the anti-csrf token." ,
147156 }
148157 }
149158
150159 if expiryTime < GetCurrTimeInMS () {
160+ supertokens .LogDebugMessage ("GetInfoFromAccessToken: Returning TryRefreshTokenError because access is expired" )
151161 return nil , sterrors.TryRefreshTokenError {
152162 Msg : "Access token expired" ,
153163 }
@@ -169,41 +179,55 @@ func ValidateAccessTokenStructure(payload map[string]interface{}, version int) e
169179 err := errors .New ("Access token does not contain all the information. Maybe the structure has changed?" )
170180
171181 if version >= 3 {
182+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: Access token is using version >= 3" )
172183 if _ , ok := payload ["sessionHandle" ].(string ); ! ok {
184+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: sessionHandle not found in JWT payload" )
173185 return err
174186 }
175187 if _ , ok := payload ["sub" ].(string ); ! ok {
188+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: sub claim not found in JWT payload" )
176189 return err
177190 }
178191 if _ , ok := payload ["refreshTokenHash1" ].(string ); ! ok {
192+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: refreshTokenHash1 not found in JWT payload" )
179193 return err
180194 }
181195 if _ , ok := payload ["exp" ].(float64 ); ! ok {
196+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: exp claim not found in JWT payload" )
182197 return err
183198 }
184199 if _ , ok := payload ["iat" ].(float64 ); ! ok {
200+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: iat claim not found in JWT payload" )
185201 return err
186202 }
187203 } else {
204+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: Access token is using version < 3" )
188205 if _ , ok := payload ["sessionHandle" ].(string ); ! ok {
206+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: sessionHandle not found in JWT payload" )
189207 return err
190208 }
191209 if _ , ok := payload ["userId" ].(string ); ! ok {
210+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: userId not found in JWT payload" )
192211 return err
193212 }
194213 if _ , ok := payload ["refreshTokenHash1" ].(string ); ! ok {
214+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: refreshTokenHash1 not found in JWT payload" )
195215 return err
196216 }
197217 if payload ["userData" ] == nil {
218+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: userData not found in JWT payload" )
198219 return err
199220 }
200221 if _ , ok := payload ["userData" ].(map [string ]interface {}); ! ok {
222+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: userData is invalid in JWT payload" )
201223 return err
202224 }
203225 if _ , ok := payload ["expiryTime" ].(float64 ); ! ok {
226+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: expiryTime not found in JWT payload" )
204227 return err
205228 }
206229 if _ , ok := payload ["timeCreated" ].(float64 ); ! ok {
230+ supertokens .LogDebugMessage ("ValidateAccessTokenStructure: timeCreated not found in JWT payload" )
207231 return err
208232 }
209233 }
0 commit comments