diff --git a/openid-connect-server/src/main/java/org/mitre/uma/web/PermissionRegistrationEndpoint.java b/openid-connect-server/src/main/java/org/mitre/uma/web/PermissionRegistrationEndpoint.java index 0b94a1cff..bab1ccdd0 100644 --- a/openid-connect-server/src/main/java/org/mitre/uma/web/PermissionRegistrationEndpoint.java +++ b/openid-connect-server/src/main/java/org/mitre/uma/web/PermissionRegistrationEndpoint.java @@ -17,6 +17,9 @@ package org.mitre.uma.web; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import static org.mitre.oauth2.web.AuthenticationUtilities.ensureOAuthScope; import static org.mitre.util.JsonUtils.getAsLong; import static org.mitre.util.JsonUtils.getAsStringSet; @@ -32,11 +35,15 @@ import org.mitre.uma.service.PermissionService; import org.mitre.uma.service.ResourceSetService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; +import org.springframework.security.oauth2.common.exceptions.OAuth2Exception; +import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.MimeTypeUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -54,6 +61,8 @@ import com.google.gson.JsonParser; @RequestMapping("/" + PermissionRegistrationEndpoint.URL) @PreAuthorize("hasRole('ROLE_USER')") public class PermissionRegistrationEndpoint { + // Logger for this class + private static final Logger logger = LoggerFactory.getLogger(PermissionRegistrationEndpoint.class); public static final String URL = "permission"; @@ -63,6 +72,9 @@ public class PermissionRegistrationEndpoint { @Autowired private ResourceSetService resourceSetService; + @Autowired + private WebResponseExceptionTranslator providerExceptionHandler; + private JsonParser parser = new JsonParser(); @RequestMapping(method = RequestMethod.POST, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE) @@ -140,4 +152,11 @@ public class PermissionRegistrationEndpoint { } + + @ExceptionHandler(OAuth2Exception.class) + public ResponseEntity handleException(Exception e) throws Exception { + logger.info("Handling error: " + e.getClass().getSimpleName() + ", " + e.getMessage()); + return providerExceptionHandler.translate(e); + } + } diff --git a/openid-connect-server/src/main/java/org/mitre/uma/web/ResourceSetRegistrationEndpoint.java b/openid-connect-server/src/main/java/org/mitre/uma/web/ResourceSetRegistrationEndpoint.java index 0b63b6d87..cc43ccf1f 100644 --- a/openid-connect-server/src/main/java/org/mitre/uma/web/ResourceSetRegistrationEndpoint.java +++ b/openid-connect-server/src/main/java/org/mitre/uma/web/ResourceSetRegistrationEndpoint.java @@ -27,6 +27,7 @@ import org.mitre.openid.connect.config.ConfigurationPropertiesBean; import org.mitre.openid.connect.view.HttpCodeView; import org.mitre.openid.connect.view.JsonEntityView; import org.mitre.openid.connect.view.JsonErrorView; +import org.mitre.uma.model.Claim; import org.mitre.uma.model.ResourceSet; import org.mitre.uma.service.ResourceSetService; import org.mitre.uma.view.ResourceSetEntityAbbreviatedView; @@ -35,18 +36,23 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; +import org.springframework.security.oauth2.common.exceptions.OAuth2Exception; import org.springframework.security.oauth2.provider.OAuth2Authentication; +import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.MimeTypeUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.google.common.base.Strings; +import com.google.common.collect.ImmutableSet; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; @@ -71,6 +77,11 @@ public class ResourceSetRegistrationEndpoint { @Autowired private ConfigurationPropertiesBean config; + + + @Autowired + private WebResponseExceptionTranslator providerExceptionHandler; + private JsonParser parser = new JsonParser(); @@ -266,4 +277,12 @@ public class ResourceSetRegistrationEndpoint { } + + @ExceptionHandler(OAuth2Exception.class) + public ResponseEntity handleException(Exception e) throws Exception { + logger.info("Handling error: " + e.getClass().getSimpleName() + ", " + e.getMessage()); + return providerExceptionHandler.translate(e); + } + + }