diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientAssociateView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientAssociateView.java new file mode 100644 index 000000000..4238928cf --- /dev/null +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientAssociateView.java @@ -0,0 +1,61 @@ +/** + * + */ +package org.mitre.openid.connect.view; + +import java.io.IOException; +import java.io.Writer; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.mitre.oauth2.model.ClientDetailsEntity; +import org.springframework.stereotype.Component; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.web.servlet.view.AbstractView; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; + +/** + * @author jricher + * + */ +@Component("clientAssociate") +public class ClientAssociateView extends AbstractView { + + /* (non-Javadoc) + * @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) { + + response.setContentType("application/json"); + + try { + + Gson gson = new GsonBuilder().create(); + + ClientDetailsEntity client = (ClientDetailsEntity) model.get("client"); + + JsonObject obj = new JsonObject(); + obj.addProperty("client_id", client.getClientId()); + obj.addProperty("client_secret", client.getClientSecret()); + obj.addProperty("expires_at", 0); // TODO: configure expiring client secrets. For now, they don't expire + + Writer out = response.getWriter(); + gson.toJson(obj, out); + + } catch (IOException e) { + + logger.error("IOException " + e.getStackTrace()); + + } + + } + +} diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientUpdateView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientUpdateView.java new file mode 100644 index 000000000..24a5374c0 --- /dev/null +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientUpdateView.java @@ -0,0 +1,54 @@ +/** + * + */ +package org.mitre.openid.connect.view; + +import java.io.IOException; +import java.io.Writer; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.mitre.oauth2.model.ClientDetailsEntity; +import org.springframework.web.servlet.view.AbstractView; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; + +/** + * @author jricher + * + */ +public class ClientUpdateView extends AbstractView { + + /* (non-Javadoc) + * @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + */ + @Override + protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { + + response.setContentType("application/json"); + + try { + + Gson gson = new GsonBuilder().create(); + + ClientDetailsEntity client = (ClientDetailsEntity) model.get("client"); + + JsonObject obj = new JsonObject(); + obj.addProperty("client_id", client.getClientId()); + + Writer out = response.getWriter(); + gson.toJson(obj, out); + + } catch (IOException e) { + + logger.error("IOException " + e.getStackTrace()); + + } + + } + +} diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientDynamicRegistrationEndpoint.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientDynamicRegistrationEndpoint.java index c7d00b5f9..5fb44a203 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientDynamicRegistrationEndpoint.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientDynamicRegistrationEndpoint.java @@ -220,6 +220,7 @@ public class ClientDynamicRegistrationEndpoint { client.setAccessTokenValiditySeconds(3600); // access tokens good for 1hr client.setIdTokenValiditySeconds(600); // id tokens good for 10min client.setRefreshTokenValiditySeconds(null); // refresh tokens good until revoked + client.setAuthorizedGrantTypes(Sets.newHashSet("authorization_code")); client.setDynamicallyRegistered(true);