You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/10/01 15:04:42 UTC
[1/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS
ContainerRequestFilter to check X-Syncope-Domain provided value
Repository: syncope
Updated Branches:
refs/heads/2_0_X 3285cc036 -> 1b2c2050a
refs/heads/2_1_X 88891b155 -> 54e528b89
refs/heads/master c2cc8c977 -> da9186869
[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/1b2c2050
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/1b2c2050
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/1b2c2050
Branch: refs/heads/2_0_X
Commit: 1b2c2050a0d96bc9d56105c9dd16fb412c2a673d
Parents: 62faf1f
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:01:59 2018 +0200
----------------------------------------------------------------------
.../syncope/core/rest/cxf/AddETagFilter.java | 2 +-
.../core/rest/cxf/CheckDomainFilter.java | 81 ++++++++++++++++++++
.../src/main/resources/restCXFContext.xml | 2 +
.../core/spring/security/AuthContextUtils.java | 15 ++--
.../src/main/resources/jboss/restCXFContext.xml | 2 +
.../syncope/fit/core/MultitenancyITCase.java | 17 ++++
6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
/**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
* The actual ETag value is computed on the basis of last change date (or creation date if not available).
*/
@Provider
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.rest.cxf;
+
+import java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+ @Autowired
+ private DomainDAO domainDAO;
+
+ @Override
+ public void filter(final ContainerRequestContext reqContext) throws IOException {
+ final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+ if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+ AuthContextUtils.execWithAuthContext(
+ SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+ @Override
+ public Void exec() {
+ if (domainDAO.find(domain) == null) {
+ String message = "Domain '" + domain + "' not available";
+
+ ErrorTO error = new ErrorTO();
+ error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+ error.setType(ClientExceptionType.NotFound);
+ error.getElements().add(message);
+
+ reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+ entity(error).
+ header(HttpHeaders.CONTENT_TYPE,
+ reqContext.getAcceptableMediaTypes().isEmpty()
+ ? MediaType.APPLICATION_JSON
+ : reqContext.getAcceptableMediaTypes().get(0).toString()).
+ header(RESTHeaders.ERROR_CODE,
+ ClientExceptionType.NotFound.name()).
+ header(RESTHeaders.ERROR_INFO,
+ ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+ build());
+ }
+ return null;
+ }
+ });
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/rest-cxf/src/main/resources/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml
index ec4b0ff..caa1c88 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -85,6 +85,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -152,6 +153,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index cc0b4fd..b0a1b5b 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -112,7 +112,7 @@ public final class AuthContextUtils {
return domainKey;
}
- private static void setFakeAuth(final String domain) {
+ private static Authentication getFakeAuth(final String domain) {
List<GrantedAuthority> authorities = CollectionUtils.collect(EntitlementsHolder.getInstance().getValues(),
new Transformer<String, GrantedAuthority>() {
@@ -126,20 +126,19 @@ public final class AuthContextUtils {
new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
"FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
auth.setDetails(new SyncopeAuthenticationDetails(domain));
- SecurityContextHolder.getContext().setAuthentication(auth);
+ return auth;
}
- public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
- SecurityContext ctx = SecurityContextHolder.getContext();
- setFakeAuth(domainKey);
+ public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+ Authentication original = SecurityContextHolder.getContext().getAuthentication();
+ SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
try {
return executable.exec();
} catch (Throwable t) {
- LOG.debug("Error during execution with domain {} context", domainKey, t);
+ LOG.debug("Error during execution with domain {} context", domain, t);
throw t;
} finally {
- SecurityContextHolder.clearContext();
- SecurityContextHolder.setContext(ctx);
+ SecurityContextHolder.getContext().setAuthentication(original);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
index 5480f68..fdefbdf 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -85,6 +85,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -166,6 +167,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b2c2050/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index b3f08ee..59405fe 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.PushTaskTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.LoggerType;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.MatchingRule;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
import org.apache.syncope.common.rest.api.service.ResourceService;
import org.apache.syncope.common.rest.api.service.SchemaService;
import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
import org.apache.syncope.common.rest.api.service.UserService;
import org.apache.syncope.fit.AbstractITCase;
import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
adminClient.getService(ResourceService.class).delete(resource.getKey());
}
}
+
+ @Test
+ public void issueSYNCOPE1377() {
+ try {
+ new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+ getService(UserSelfService.class).
+ create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
+ assertTrue(e.getMessage().contains("NotExisting"));
+ }
+ }
}
[6/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS
ContainerRequestFilter to check X-Syncope-Domain provided value
Posted by il...@apache.org.
[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/da918686
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/da918686
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/da918686
Branch: refs/heads/master
Commit: da91868697e61412ef53cdee717bc82b6db405bc
Parents: 25d6c1f
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:33 2018 +0200
----------------------------------------------------------------------
.../syncope/core/rest/cxf/AddETagFilter.java | 2 +-
.../core/rest/cxf/CheckDomainFilter.java | 81 ++++++++++++++++++++
.../src/main/resources/restCXFContext.xml | 2 +
.../core/spring/security/AuthContextUtils.java | 15 ++--
.../src/main/resources/jboss/restCXFContext.xml | 2 +
.../syncope/fit/core/MultitenancyITCase.java | 17 ++++
6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
/**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
* The actual ETag value is computed on the basis of last change date (or creation date if not available).
*/
@Provider
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.rest.cxf;
+
+import java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+ @Autowired
+ private DomainDAO domainDAO;
+
+ @Override
+ public void filter(final ContainerRequestContext reqContext) throws IOException {
+ final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+ if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+ AuthContextUtils.execWithAuthContext(
+ SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+ @Override
+ public Void exec() {
+ if (domainDAO.find(domain) == null) {
+ String message = "Domain '" + domain + "' not available";
+
+ ErrorTO error = new ErrorTO();
+ error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+ error.setType(ClientExceptionType.NotFound);
+ error.getElements().add(message);
+
+ reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+ entity(error).
+ header(HttpHeaders.CONTENT_TYPE,
+ reqContext.getAcceptableMediaTypes().isEmpty()
+ ? MediaType.APPLICATION_JSON
+ : reqContext.getAcceptableMediaTypes().get(0).toString()).
+ header(RESTHeaders.ERROR_CODE,
+ ClientExceptionType.NotFound.name()).
+ header(RESTHeaders.ERROR_INFO,
+ ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+ build());
+ }
+ return null;
+ }
+ });
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/rest-cxf/src/main/resources/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml
index dd3ff18..b68b33f 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -165,6 +166,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index 6bc5fdb..ee99056 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -98,7 +98,7 @@ public final class AuthContextUtils {
return domainKey;
}
- private static void setFakeAuth(final String domain) {
+ private static Authentication getFakeAuth(final String domain) {
List<GrantedAuthority> authorities = EntitlementsHolder.getInstance().getValues().stream().
map(entitlement -> new SyncopeGrantedAuthority(entitlement, SyncopeConstants.ROOT_REALM)).
collect(Collectors.toList());
@@ -107,20 +107,19 @@ public final class AuthContextUtils {
new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
"FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
auth.setDetails(new SyncopeAuthenticationDetails(domain));
- SecurityContextHolder.getContext().setAuthentication(auth);
+ return auth;
}
- public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
- SecurityContext ctx = SecurityContextHolder.getContext();
- setFakeAuth(domainKey);
+ public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+ Authentication original = SecurityContextHolder.getContext().getAuthentication();
+ SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
try {
return executable.exec();
} catch (Throwable t) {
- LOG.debug("Error during execution with domain {} context", domainKey, t);
+ LOG.debug("Error during execution with domain {} context", domain, t);
throw t;
} finally {
- SecurityContextHolder.clearContext();
- SecurityContextHolder.setContext(ctx);
+ SecurityContextHolder.getContext().setAuthentication(original);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
index b06589b..7bb4b94 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -179,6 +180,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/da918686/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index e07c30f..c088bd6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.PushTaskTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.LoggerType;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.ExecStatus;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
import org.apache.syncope.common.rest.api.service.ResourceService;
import org.apache.syncope.common.rest.api.service.SchemaService;
import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
import org.apache.syncope.common.rest.api.service.UserService;
import org.apache.syncope.fit.AbstractITCase;
import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
adminClient.getService(ResourceService.class).delete(resource.getKey());
}
}
+
+ @Test
+ public void issueSYNCOPE1377() {
+ try {
+ new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+ getService(UserSelfService.class).
+ create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+ fail("This should not happen");
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
+ assertTrue(e.getMessage().contains("NotExisting"));
+ }
+ }
}
[4/6] syncope git commit: [SYNCOPE-1377] Added JAX-RS
ContainerRequestFilter to check X-Syncope-Domain provided value
Posted by il...@apache.org.
[SYNCOPE-1377] Added JAX-RS ContainerRequestFilter to check X-Syncope-Domain provided value
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/54e528b8
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/54e528b8
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/54e528b8
Branch: refs/heads/2_1_X
Commit: 54e528b894873708b635e74a9410d1ca00e696b9
Parents: c2e8a20
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 17:01:49 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:09 2018 +0200
----------------------------------------------------------------------
.../syncope/core/rest/cxf/AddETagFilter.java | 2 +-
.../core/rest/cxf/CheckDomainFilter.java | 81 ++++++++++++++++++++
.../src/main/resources/restCXFContext.xml | 2 +
.../core/spring/security/AuthContextUtils.java | 15 ++--
.../src/main/resources/jboss/restCXFContext.xml | 2 +
.../syncope/fit/core/MultitenancyITCase.java | 17 ++++
6 files changed, 110 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
index dc6f0e6..145bea2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
/**
- * Adds the <tt>ETag</tt> header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
+ * Adds the {@code ETag} header to any response containing an instance of {@link AbstractAnnotatedBean} as entity.
* The actual ETag value is computed on the basis of last change date (or creation date if not available).
*/
@Provider
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
new file mode 100644
index 0000000..f2aabad
--- /dev/null
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.rest.cxf;
+
+import java.io.IOException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ErrorTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.core.persistence.api.dao.DomainDAO;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Checks that requested Domain exists.
+ */
+@Provider
+@PreMatching
+public class CheckDomainFilter implements ContainerRequestFilter {
+
+ @Autowired
+ private DomainDAO domainDAO;
+
+ @Override
+ public void filter(final ContainerRequestContext reqContext) throws IOException {
+ final String domain = reqContext.getHeaderString(RESTHeaders.DOMAIN);
+ if (domain != null && !SyncopeConstants.MASTER_DOMAIN.equals(domain)) {
+ AuthContextUtils.execWithAuthContext(
+ SyncopeConstants.MASTER_DOMAIN, new AuthContextUtils.Executable<Void>() {
+
+ @Override
+ public Void exec() {
+ if (domainDAO.find(domain) == null) {
+ String message = "Domain '" + domain + "' not available";
+
+ ErrorTO error = new ErrorTO();
+ error.setStatus(Response.Status.NOT_FOUND.getStatusCode());
+ error.setType(ClientExceptionType.NotFound);
+ error.getElements().add(message);
+
+ reqContext.abortWith(Response.status(Response.Status.NOT_FOUND).
+ entity(error).
+ header(HttpHeaders.CONTENT_TYPE,
+ reqContext.getAcceptableMediaTypes().isEmpty()
+ ? MediaType.APPLICATION_JSON
+ : reqContext.getAcceptableMediaTypes().get(0).toString()).
+ header(RESTHeaders.ERROR_CODE,
+ ClientExceptionType.NotFound.name()).
+ header(RESTHeaders.ERROR_INFO,
+ ClientExceptionType.NotFound.getInfoHeaderValue(message)).
+ build());
+ }
+ return null;
+ }
+ });
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/rest-cxf/src/main/resources/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml
index dd3ff18..b68b33f 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -165,6 +166,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index 6bc5fdb..ee99056 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -98,7 +98,7 @@ public final class AuthContextUtils {
return domainKey;
}
- private static void setFakeAuth(final String domain) {
+ private static Authentication getFakeAuth(final String domain) {
List<GrantedAuthority> authorities = EntitlementsHolder.getInstance().getValues().stream().
map(entitlement -> new SyncopeGrantedAuthority(entitlement, SyncopeConstants.ROOT_REALM)).
collect(Collectors.toList());
@@ -107,20 +107,19 @@ public final class AuthContextUtils {
new User(ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
"FAKE_PASSWORD", authorities), "FAKE_PASSWORD", authorities);
auth.setDetails(new SyncopeAuthenticationDetails(domain));
- SecurityContextHolder.getContext().setAuthentication(auth);
+ return auth;
}
- public static <T> T execWithAuthContext(final String domainKey, final Executable<T> executable) {
- SecurityContext ctx = SecurityContextHolder.getContext();
- setFakeAuth(domainKey);
+ public static <T> T execWithAuthContext(final String domain, final Executable<T> executable) {
+ Authentication original = SecurityContextHolder.getContext().getAuthentication();
+ SecurityContextHolder.getContext().setAuthentication(getFakeAuth(domain));
try {
return executable.exec();
} catch (Throwable t) {
- LOG.debug("Error during execution with domain {} context", domainKey, t);
+ LOG.debug("Error during execution with domain {} context", domain, t);
throw t;
} finally {
- SecurityContextHolder.clearContext();
- SecurityContextHolder.setContext(ctx);
+ SecurityContextHolder.getContext().setAuthentication(original);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
index b06589b..7bb4b94 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -90,6 +90,7 @@ under the License.
<bean id="searchContextProvider" class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
+ <bean id="checkDomainFilter" class="org.apache.syncope.core.rest.cxf.CheckDomainFilter"/>
<bean id="addDomainFilter" class="org.apache.syncope.core.rest.cxf.AddDomainFilter"/>
<bean id="addETagFilter" class="org.apache.syncope.core.rest.cxf.AddETagFilter"/>
@@ -179,6 +180,7 @@ under the License.
<ref bean="yamlProvider"/>
<ref bean="exceptionMapper"/>
<ref bean="searchContextProvider"/>
+ <ref bean="checkDomainFilter"/>
<ref bean="addDomainFilter"/>
<ref bean="addETagFilter"/>
<ref bean="wadlGenerator"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/54e528b8/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index e07c30f..c088bd6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -21,6 +21,7 @@ package org.apache.syncope.fit.core;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.List;
@@ -31,6 +32,7 @@ import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ItemTO;
@@ -45,6 +47,7 @@ import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.PushTaskTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.LoggerType;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.ExecStatus;
@@ -63,6 +66,7 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
import org.apache.syncope.common.rest.api.service.ResourceService;
import org.apache.syncope.common.rest.api.service.SchemaService;
import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
import org.apache.syncope.common.rest.api.service.UserService;
import org.apache.syncope.fit.AbstractITCase;
import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -241,4 +245,17 @@ public class MultitenancyITCase extends AbstractITCase {
adminClient.getService(ResourceService.class).delete(resource.getKey());
}
}
+
+ @Test
+ public void issueSYNCOPE1377() {
+ try {
+ new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("NotExisting").create().
+ getService(UserSelfService.class).
+ create(UserITCase.getUniqueSampleTO("syncope1377@syncope.apache.org"), true);
+ fail("This should not happen");
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
+ assertTrue(e.getMessage().contains("NotExisting"));
+ }
+ }
}
[3/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin
Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/c2e8a209
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/c2e8a209
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/c2e8a209
Branch: refs/heads/2_1_X
Commit: c2e8a2092c5d5ba713cef5cff535ead06b48af10
Parents: 88891b1
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:02:10 2018 +0200
----------------------------------------------------------------------
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/c2e8a209/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ab962f8..e77a599 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,7 @@ under the License.
<font-awesome.filename>font-awesome.min.css</font-awesome.filename>
<ionicons.version>2.0.1</ionicons.version>
<highlightjs.version>9.8.0</highlightjs.version>
- <codemirror.version>5.33.0</codemirror.version>
+ <codemirror.version>5.40.2</codemirror.version>
<googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
<jsplumb.version>2.0.7</jsplumb.version>
<chartjs.version>1.0.2</chartjs.version>
@@ -1947,7 +1947,7 @@ under the License.
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>0.27.0</version>
+ <version>0.27.1</version>
</plugin>
<plugin>
[2/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin
Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/62faf1fe
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/62faf1fe
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/62faf1fe
Branch: refs/heads/2_0_X
Commit: 62faf1fe32dcaf80faaad85026c704f00b636368
Parents: 3285cc0
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:01:59 2018 +0200
----------------------------------------------------------------------
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/62faf1fe/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8db8281..180c3d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -462,7 +462,7 @@ under the License.
<font-awesome.filename>font-awesome.min.css</font-awesome.filename>
<ionicons.version>2.0.1</ionicons.version>
<highlightjs.version>9.8.0</highlightjs.version>
- <codemirror.version>5.33.0</codemirror.version>
+ <codemirror.version>5.40.2</codemirror.version>
<googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
<jsplumb.version>2.0.7</jsplumb.version>
<chartjs.version>1.0.2</chartjs.version>
@@ -2021,7 +2021,7 @@ under the License.
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>0.27.0</version>
+ <version>0.27.1</version>
</plugin>
<plugin>
[5/6] syncope git commit: Upgrading Codemirror and docker-maven-plugin
Posted by il...@apache.org.
Upgrading Codemirror and docker-maven-plugin
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/25d6c1f7
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/25d6c1f7
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/25d6c1f7
Branch: refs/heads/master
Commit: 25d6c1f76b7fc544013b32710c8203f4c09dbea9
Parents: c2cc8c9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Oct 1 08:37:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Oct 1 17:04:30 2018 +0200
----------------------------------------------------------------------
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/25d6c1f7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bfd47c3..8a90d63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,7 @@ under the License.
<font-awesome.filename>font-awesome.min.css</font-awesome.filename>
<ionicons.version>2.0.1</ionicons.version>
<highlightjs.version>9.8.0</highlightjs.version>
- <codemirror.version>5.33.0</codemirror.version>
+ <codemirror.version>5.40.2</codemirror.version>
<googlediffmatchpath.version>20121119-1</googlediffmatchpath.version>
<jsplumb.version>2.0.7</jsplumb.version>
<chartjs.version>1.0.2</chartjs.version>
@@ -1947,7 +1947,7 @@ under the License.
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>0.27.0</version>
+ <version>0.27.1</version>
</plugin>
<plugin>