diff --git a/src/main/java/org/olat/login/oauth/spi/JSONWebToken.java b/src/main/java/org/olat/login/oauth/spi/JSONWebToken.java index 2ae7bb15d4af9332d29bd2b04a7f5d74f28d9622..37410557a14e8d2fdff5143a49c698685537622a 100644 --- a/src/main/java/org/olat/login/oauth/spi/JSONWebToken.java +++ b/src/main/java/org/olat/login/oauth/spi/JSONWebToken.java @@ -19,8 +19,10 @@ */ package org.olat.login.oauth.spi; +import org.apache.logging.log4j.Logger; import org.json.JSONException; import org.json.JSONObject; +import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import com.github.scribejava.core.model.OAuth2AccessToken; @@ -33,6 +35,8 @@ import com.github.scribejava.core.model.OAuth2AccessToken; */ public class JSONWebToken { + private static final Logger log = Tracing.createLoggerFor(JSONWebToken.class); + private final String header; private final String payload; private final JSONObject jsonPayload; @@ -56,24 +60,40 @@ public class JSONWebToken { } public static JSONWebToken parse(OAuth2AccessToken token) throws JSONException { - String accessToken= token.getAccessToken(); - - int firstIndex = accessToken.indexOf('.'); - int secondIndex = accessToken.indexOf('.', firstIndex + 1); - - String header = StringHelper.decodeBase64(accessToken.substring(0, firstIndex)); - String payload = StringHelper.decodeBase64(accessToken.substring(firstIndex, secondIndex)); - JSONObject jsonPayload = new JSONObject(payload); - return new JSONWebToken(header, payload, jsonPayload); + try { + String accessToken= token.getAccessToken(); + + int firstIndex = accessToken.indexOf('.'); + int secondIndex = accessToken.indexOf('.', firstIndex + 1); + + String header = StringHelper.decodeBase64(accessToken.substring(0, firstIndex)); + String payload = StringHelper.decodeBase64(accessToken.substring(firstIndex, secondIndex)); + JSONObject jsonPayload = new JSONObject(payload); + return new JSONWebToken(header, payload, jsonPayload); + } catch (JSONException e) { + log.error("Cannot parse token: {}", token.getAccessToken()); + throw e; + } catch (Exception e) { + log.error("Cannot parse token: {}", token.getAccessToken()); + throw new JSONException(e); + } } public static JSONWebToken parse(String accessToken) throws JSONException { - int firstIndex = accessToken.indexOf('.'); - int secondIndex = accessToken.indexOf('.', firstIndex + 1); - - String header = StringHelper.decodeBase64(accessToken.substring(0, firstIndex)); - String payload = StringHelper.decodeBase64(accessToken.substring(firstIndex, secondIndex)); - JSONObject jsonPayload = new JSONObject(payload); - return new JSONWebToken(header, payload, jsonPayload); + try { + int firstIndex = accessToken.indexOf('.'); + int secondIndex = accessToken.indexOf('.', firstIndex + 1); + + String header = StringHelper.decodeBase64(accessToken.substring(0, firstIndex)); + String payload = StringHelper.decodeBase64(accessToken.substring(firstIndex, secondIndex)); + JSONObject jsonPayload = new JSONObject(payload); + return new JSONWebToken(header, payload, jsonPayload); + } catch (JSONException e) { + log.error("Cannot parse token: {}", accessToken); + throw e; + } catch (Exception e) { + log.error("Cannot parse token: {}", accessToken); + throw new JSONException(e); + } } }