From f4691fca1fab1ae2be96040c65805cf318a7fc43 Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Tue, 14 Jun 2022 11:38:04 +0530 Subject: [PATCH] fix: id token parsing --- server/handlers/oauth_callback.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/server/handlers/oauth_callback.go b/server/handlers/oauth_callback.go index 9201692..e8ed5b0 100644 --- a/server/handlers/oauth_callback.go +++ b/server/handlers/oauth_callback.go @@ -17,6 +17,7 @@ import ( "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/cookie" + "github.com/authorizerdev/authorizer/server/crypto" "github.com/authorizerdev/authorizer/server/db" "github.com/authorizerdev/authorizer/server/db/models" "github.com/authorizerdev/authorizer/server/memorystore" @@ -472,14 +473,23 @@ func processAppleUserInfo(code string) (models.User, error) { fmt.Println("=> rawIDToken", rawIDToken) - // Parse and verify ID Token payload. - claims, err := token.ParseJWTToken(rawIDToken) + tokenSplit := strings.Split(rawIDToken, ".") + claimsData := tokenSplit[1] + decodedClaimsData, err := crypto.DecryptB64(claimsData) if err != nil { - log.Debug("Failed to parse apple id token: ", err) - return user, err + log.Debug("Failed to decrypt claims data: ", err) + return user, fmt.Errorf("failed to decrypt claims data: %s", err.Error()) } - fmt.Println("claims:", claims) - email := claims["email"].(string) + fmt.Println("=> decoded claims data", decodedClaimsData) + + claims := map[string]string{} + err = json.Unmarshal([]byte(decodedClaimsData), &claims) + if err != nil { + log.Debug("Failed to unmarshal claims data: ", err) + return user, fmt.Errorf("failed to unmarshal claims data: %s", err.Error()) + } + fmt.Println("=> claims map:", claims) + email := claims["email"] user.Email = email return user, err