Repository: syncope Updated Branches: refs/heads/2_0_X f0a9c604e -> 703fe4d45 refs/heads/master 76a323ce0 -> 9455410cc
[SYNCOPE-1270] Better error reporting when OIDC Provider's Discovery Document cannot be found Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/703fe4d4 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/703fe4d4 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/703fe4d4 Branch: refs/heads/2_0_X Commit: 703fe4d45c762dea216f35428ff696970613f4f7 Parents: f0a9c60 Author: Francesco Chicchiriccò <[email protected]> Authored: Fri Jul 6 13:07:39 2018 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Fri Jul 6 13:07:39 2018 +0200 ---------------------------------------------------------------------- .../syncope/core/logic/OIDCProviderLogic.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/703fe4d4/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/OIDCProviderLogic.java ---------------------------------------------------------------------- diff --git a/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/OIDCProviderLogic.java b/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/OIDCProviderLogic.java index 26edcdd..cde559e 100644 --- a/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/OIDCProviderLogic.java +++ b/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/OIDCProviderLogic.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; +import javax.ws.rs.ClientErrorException; import javax.ws.rs.core.MediaType; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Transformer; @@ -63,10 +64,22 @@ public class OIDCProviderLogic extends AbstractTransactionalLogic<OIDCProviderTO } private OIDCProviderDiscoveryDocument getDiscoveryDocument(final String issuer) { - WebClient client = WebClient.create( - issuer + "/.well-known/openid-configuration", Arrays.asList(new JacksonJsonProvider())). + String discoveryDocumentURL = issuer + "/.well-known/openid-configuration"; + WebClient client = WebClient.create(discoveryDocumentURL, Arrays.asList(new JacksonJsonProvider())). accept(MediaType.APPLICATION_JSON); - return client.get(OIDCProviderDiscoveryDocument.class); + try { + return client.get(OIDCProviderDiscoveryDocument.class); + } catch (ClientErrorException e) { + LOG.error("While getting the Discovery Document at {}", discoveryDocumentURL, e); + + if (e instanceof javax.ws.rs.NotFoundException) { + throw new NotFoundException("Discovery Document cannot be found at " + discoveryDocumentURL); + } else { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown); + sce.getElements().add(e.getMessage()); + throw sce; + } + } } @PreAuthorize("hasRole('" + OIDCClientEntitlement.OP_CREATE + "')")
