From 5fe036878aa38d9d88b47be4ba4d2b14eae2958e Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Thu, 22 Mar 2012 14:09:25 -0400 Subject: [PATCH] fixed view for idtoken in checkid endpoint --- .../openid/connect/view/JSONIdTokenView.java | 22 ++++++++++++++++++- .../openid/connect/web/CheckIDEndpoint.java | 3 ++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONIdTokenView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONIdTokenView.java index 2e3f26560..160eb02cd 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONIdTokenView.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONIdTokenView.java @@ -1,11 +1,15 @@ package org.mitre.openid.connect.view; import java.io.Writer; +import java.lang.reflect.Type; +import java.security.PublicKey; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.mitre.jwt.model.ClaimSet; +import org.mitre.openid.connect.model.IdToken; import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.web.servlet.view.AbstractView; @@ -13,6 +17,11 @@ import com.google.gson.ExclusionStrategy; import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; public class JSONIdTokenView extends AbstractView { @@ -39,7 +48,18 @@ public class JSONIdTokenView extends AbstractView { return false; } - }).create(); + }) + .registerTypeHierarchyAdapter(ClaimSet.class, new JsonSerializer() { + @Override + public JsonElement serialize(ClaimSet src, Type typeOfSrc, JsonSerializationContext context) { + if (src != null) { + return src.getAsJsonObject(); + } else { + return JsonNull.INSTANCE; + } + } + }) + .create(); response.setContentType("application/json"); diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/CheckIDEndpoint.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/CheckIDEndpoint.java index 6ba3f4600..a6d601796 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/CheckIDEndpoint.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/CheckIDEndpoint.java @@ -46,7 +46,8 @@ public class CheckIDEndpoint { throw new InvalidJwtIssuerException(); // TODO: create a view for this exception } - return new ModelAndView("jsonIdTokenView", "checkId", token); // TODO: create a view for this + // pass the claims directly (the view doesn't care about other fields) + return new ModelAndView("jsonIdTokenView", "entity", token.getClaims()); } public JwtSigningAndValidationService getJwtSignerService() {