diff --git a/smp-api/pom.xml b/smp-api/pom.xml index b75507ffc0334c5b2ff3672498ef3992e97429d8..c88981896b5c8b6346724e20ff7160de552b1d01 100644 --- a/smp-api/pom.xml +++ b/smp-api/pom.xml @@ -23,6 +23,7 @@ <artifactId>smp-api</artifactId> <name>smp-api</name> + <packaging>jar</packaging> <dependencies> <!-- Generated equals() methods need it in runtime --> diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/README.md b/smp-docker/compose/tomcat-mysql-smp-sml/README.md new file mode 100755 index 0000000000000000000000000000000000000000..a95001d0751da623645f43b3d3ad345b503037e8 --- /dev/null +++ b/smp-docker/compose/tomcat-mysql-smp-sml/README.md @@ -0,0 +1,49 @@ +# Experiamental SMP docker image +Purpose of compose plan is to startup fully functinal SMP environment for demo and testing. The plan contains + - MySql database + - SML services + - CAS instance (EULOGIN) + - email server (inbucket) + + +# Run environment +docker-compose -f docker-compose.yml up -d + + +## SMP +url: http://localhost:8982/smp + +### MYSQL +Database client connection (for testing and debugging ) +url: jdbc:mysql://localhost:3908/smp +Username: smp +Password: smp + +### Volume (-v /opt/dockerdata/sml:/data) +Mysql database files and tomcat configuration (and logs) can be externalized for experimenting with different SMP settings. + + +## SML +url: http://localhost:8982/edelivery-sml/ + +### MYSQL +Database client connection (for testing and debugging ) +url: jdbc:mysql://localhost:3908/sml +Username: sml +Password: sml + +## CAS - EULOGIN +url: https://localhost:7102/cas/login +Users: + - user/123456 + - smp/123456 + - system/123456 + + To use eulogin add the following hostname mappings (Linux: /etc/hosts) + - 127.0.0.1 eulogin-mock-server + - 127.0.0.1 eulogin.protected.smp.local + + +## Mail server +url: http://172.19.0.2:9005/monitor + diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml b/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml index 29724dc5598b2db50a870dbdc94c9ac9f5ad2a36..083c7be81c1644b77bb5dfa38fb8fd5117d136c5 100644 --- a/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml +++ b/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml @@ -12,6 +12,17 @@ services: ||smp.sso.cas.urlpath.login=login ||smp.sso.cas.token.validation.urlpath=laxValidate ||smp.sso.cas.callback.url=http://eulogin.protected.smp.local:8982/smp/ui/public/rest/security/cas + ||mail.smtp.host=mail-server.smp.local + ||mail.smtp.port=2500 + ||smp.alert.user.login_failure.enabled=true + ||smp.alert.user.suspended.enabled=true + ||smp.alert.password.imminent_expiration.enabled=true + ||smp.alert.password.expired.enabled=true + ||smp.alert.accessToken.imminent_expiration.enabled=true + ||smp.alert.accessToken.expired.enabled=true + ||smp.alert.certificate.imminent_expiration.enabled=true + ||smp.alert.certificate.expired.enabled=true + ||smp.alert.accessToken.expired.enabled=true volumes: - ./properties/db-scripts:/tmp/custom-data/ @@ -32,4 +43,10 @@ services: # Map this folder to host to be able to change runtime data for manual testing! # - ./eulogin/ecas-mock-server:/data/ecas-mock-server ports: - - "7102:7102" \ No newline at end of file + - "7102:7102" + + mail-service: + image: inbucket/inbucket:3.0.0 + hostname: mail-server.smp.local + ports: + - "9005:9000" \ No newline at end of file diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/properties/db-scripts/sml-mysql5innodb-data.sql b/smp-docker/compose/tomcat-mysql-smp-sml/properties/db-scripts/sml-mysql5innodb-data.sql index fe8a92272f55bef576413b723d3aeca21c6359ca..7b6b00682297623b2a335cd6bc57d7f281a90768 100644 --- a/smp-docker/compose/tomcat-mysql-smp-sml/properties/db-scripts/sml-mysql5innodb-data.sql +++ b/smp-docker/compose/tomcat-mysql-smp-sml/properties/db-scripts/sml-mysql5innodb-data.sql @@ -45,8 +45,11 @@ INSERT INTO bdmsl_certificate_domain(certificate, crl_url, is_root_ca, fk_subdo ('CN=rootCNIsa,OU=B4,O=DIGIT,L=Brussels,ST=BE,C=BE','',1, 3, NOW(), NOW(),1), ('CN=AdministratorSML,OU=B4,O=DIGIT,C=BE','',0, 2, NOW(), NOW(),1); +INSERT INTO bdmsl_certificate (id, certificate_id, valid_from ,valid_until,created_on, last_updated_on ) VALUES +(id, 'CN=SMP_TEST-PRE-SET-EXAMPLE,O=DIGITAL,C=BE:00000000000000000000000000000001',DATE_ADD(NOW(), INTERVAL -3 DAY),DATE_ADD(NOW(), INTERVAL 365 DAY), NOW(), NOW()); - +INSERT INTO bdmsl_smp (smp_id, fk_certificate_id, fk_subdomain_id, endpoint_logical_address, endpoint_physical_address, created_on, last_updated_on ) VALUES +('CEF-SMP-001', 1,1, 'http://localhost:8080/smp/','0.0.0.0',NOW(), NOW()); diff --git a/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local b/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local index 006d3d0cd818d01d1d96081b7b5ee735aa71f5c9..b962adfa8e4b5c0f42dbcaed90ac2a1fb53ce021 100755 --- a/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local +++ b/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local @@ -12,3 +12,4 @@ test.edelivery.local IN SOA ns.test.edelivery.local. root.test.edelivery.local. $ORIGIN test.edelivery.local. $TTL 60 ; 1 minute ns A 127.0.0.1 +CEF-SMP-002.publisher 60 IN CNAME localhost. \ No newline at end of file diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java index b39f942c155aafa7ceee0e19b9deb27dfb58f68f..7331cfe880c0a35afd21a5798ae1fcfde1613419 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java @@ -4,6 +4,7 @@ import eu.europa.ec.edelivery.smp.data.model.DBConfiguration; import eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; +import eu.europa.ec.edelivery.smp.utils.PropertyUtils; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; @@ -26,29 +27,14 @@ public class DatabaseProperties extends Properties { List<DBConfiguration> lst = tq.getResultList(); for (DBConfiguration dc : lst) { if (dc.getValue() != null) { - LOG.info("Database property: [{}] value: [{}]", dc.getProperty(), - isSensitiveData(dc.getProperty()) ? "******" : dc.getValue()); - setProperty(trim(dc.getProperty()), trim(dc.getValue())); + String prop =trim(dc.getProperty()); + String value =trim(dc.getValue()); + setProperty(prop, value); + LOG.info("Database property: [{}] value: [{}]", prop,PropertyUtils.getMaskedData(prop, value) ); } lastUpdate = (lastUpdate == null || lastUpdate.isBefore(dc.getLastUpdatedOn())) ? dc.getLastUpdatedOn() : lastUpdate; } } - - /** - * Return true for properties which must not be logged! - * - * @param property - value to validate if contains sensitive data - * @return true if data is sensitive, else return false - */ - public boolean isSensitiveData(String property) { - Optional<SMPPropertyEnum> propOpt = SMPPropertyEnum.getByProperty(property); - if (propOpt.isPresent()) { - return propOpt.get().isEncrypted() || property.toLowerCase().contains(".password.decrypted"); - } - LOG.warn("Database property [{}] is not recognized by the SMP!", property); - return false; - } - public OffsetDateTime getLastUpdate() { return lastUpdate; } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java index 10db28feb0915cb50eeca54fad707c7637d8c42a..ef783dbb441c20bd3c43d83934f36a19408aa330 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java @@ -27,6 +27,7 @@ import eu.europa.ec.edelivery.smp.utils.SecurityUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.springframework.context.ApplicationContext; +import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.ContextStartedEvent; import org.springframework.context.event.ContextStoppedEvent; import org.springframework.context.event.EventListener; @@ -217,7 +218,7 @@ public class ConfigurationDao extends BaseDao<DBConfiguration> { /** * Application event when an {@code ApplicationContext} gets initialized or start */ - @EventListener({ContextStartedEvent.class}) + @EventListener({ContextRefreshedEvent.class}) public void contextRefreshedEvent() { LOG.debug("Application context is initialized: triggered refresh to update all property listeners"); setInitializedTime(OffsetDateTime.now()); diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java index 1f05006f49b2c5c556190ad17c56c92e25710f2a..a19fcba95657e2c739c35def5ef5766f01decd80 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java @@ -117,7 +117,7 @@ public enum SMPPropertyEnum { SSO_CAS_TOKEN_VALIDATION_PARAMS("smp.sso.cas.token.validation.params", "acceptStrengths:BASIC,CLIENT_CERT|assuranceLevel:TOP", "The CAS token validation key:value properties separated with '|'.Ex: 'acceptStrengths:BASIC,CLIENT_CERT|assuranceLevel:TOP'", false, false, true, MAP_STRING), SSO_CAS_TOKEN_VALIDATION_GROUPS("smp.sso.cas.token.validation.groups", "DIGIT_SMP|DIGIT_ADMIN", "'|' separated CAS groups user must belong to.", false, false, true, LIST_STRING), - MAIL_SERVER_HOST("mail.smtp.host", "mail.server.com", "Email server - configuration for submitting the emails.", false,false, false, STRING), + MAIL_SERVER_HOST("mail.smtp.host", "", "Email server - configuration for submitting the emails.", false,false, false, STRING), MAIL_SERVER_PORT("mail.smtp.port", "25", "Smtp mail port - configuration for submitting the emails.", false,false, false,INTEGER), MAIL_SERVER_PROTOCOL("mail.smtp.protocol", "smtp", "smtp mail protocol- configuration for submitting the emails.", false,false,false, STRING), MAIL_SERVER_USERNAME("mail.smtp.username", "", "smtp mail protocol- username for submitting the emails.", false,false,false, STRING), diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java index 66406391c6d2afe5461aa12da07eedc4f875d1fa..d1b6f1e5cfb30fd80b6db778565cb93e56c5a39d 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java @@ -15,6 +15,7 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; +import java.util.Optional; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; @@ -24,6 +25,7 @@ import static org.apache.commons.lang3.StringUtils.*; public class PropertyUtils { + private static final String MASKED_VALUE = "*******"; private static final SMPLogger LOG = SMPLoggerFactory.getLogger(PropertyUtils.class); private static final String REG_EXP_SEPARATOR = "\\|"; @@ -153,8 +155,33 @@ public class PropertyUtils { case STRING: return value; } - // property va - return null; } + + + /** + * Return true for properties with sensitive data. For example the property value must not be logged + * or returned via WS! + * + * @param property - value to validate if contains sensitive data + * @return true if data is sensitive, else return false + */ + public static boolean isSensitiveData(String property) { + Optional<SMPPropertyEnum> propOpt = SMPPropertyEnum.getByProperty(trim(property)); + if (propOpt.isPresent()) { + return propOpt.get().isEncrypted() || property.toLowerCase().contains(".password.decrypted"); + } + LOG.warn("Database property [{}] is not recognized by the SMP!", property); + return false; + } + + /** + * Method returns 'masked' value for sensitive property data + * @param property + * @param value + * @return masked value for sensitive properties. Else it returns value! + */ + public static String getMaskedData(String property, String value) { + return isSensitiveData(property) ? MASKED_VALUE : value; + } } diff --git a/smp-server-library/src/main/resources/alert-mail-templates/credential_suspended.ftl b/smp-server-library/src/main/resources/alert-mail-templates/credential_suspended.ftl index 53c653cf13f909294c90fae482451d8e2fba56e6..bb9265e60840ce515396e1dd463aaed3d8a9720f 100644 --- a/smp-server-library/src/main/resources/alert-mail-templates/credential_suspended.ftl +++ b/smp-server-library/src/main/resources/alert-mail-templates/credential_suspended.ftl @@ -83,7 +83,7 @@ <p><strong>Failed login attempt count:</strong> ${FAILED_LOGIN_ATTEMPT}</p> <p><strong>Last failed login time:</strong> ${LAST_LOGIN_FAILURE_DATETIME}</p> <p><strong>Suspended util</strong> ${SUSPENDED_UNTIL_DATETIME}</p> - <p><strong>Reporting time:</strong> ${REPORTING_TIME}</p> + <p><strong>Reporting time:</strong> ${REPORTING_DATETIME}</p> <p><strong>Alert level:</strong> ${ALERT_LEVEL}</p> <p><strong>Server name:</strong> ${SERVER_NAME}</p> </td> diff --git a/smp-server-library/src/main/resources/alert-mail-templates/credential_verification_failed.ftl b/smp-server-library/src/main/resources/alert-mail-templates/credential_verification_failed.ftl index 9f3de0870dd7c9758cc1b93f61a9fe22e63e89af..53e237aa622b4cfad2668bc3f3cca81807f4dec5 100644 --- a/smp-server-library/src/main/resources/alert-mail-templates/credential_verification_failed.ftl +++ b/smp-server-library/src/main/resources/alert-mail-templates/credential_verification_failed.ftl @@ -82,7 +82,7 @@ <p><strong>Credential id:</strong> ${CREDENTIAL_ID}</p> <p><strong>Failed login attempt count:</strong> ${FAILED_LOGIN_ATTEMPT}</p> <p><strong>Last failed login time:</strong> ${LAST_LOGIN_FAILURE_DATETIME}</p> - <p><strong>Reporting time:</strong> ${REPORTING_TIME}</p> + <p><strong>Reporting time:</strong> ${REPORTING_DATETIME}</p> <p><strong>Alert level:</strong> ${ALERT_LEVEL}</p> <p><strong>Server name:</strong> ${SERVER_NAME}</p> </td> diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java index 2a44831d7302b546788becc9151d88b89cf11540..cbfbf2d80f9f9b2e127d813611c43ca2f3da662c 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java @@ -10,6 +10,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import java.io.File; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -21,6 +22,10 @@ import static org.junit.Assert.*; @RunWith(JUnitParamsRunner.class) public class PropertyUtilsTest { + private static final List<SMPPropertyEnum> SENSITIVE_PROPERTIES = Arrays.asList( + + HTTP_PROXY_PASSWORD, KEYSTORE_PASSWORD, TRUSTSTORE_PASSWORD, KEYSTORE_PASSWORD_DECRYPTED, TRUSTSTORE_PASSWORD_DECRYPTED, MAIL_SERVER_PASSWORD); + private static final Object[] testTypeValues() { return new Object[][]{ {STRING, "this is a string", true, true}, @@ -171,4 +176,21 @@ public class PropertyUtilsTest { fail("Unknown property type"); } } + + + @Test + public void testIsSensitiveData() { + for (SMPPropertyEnum smpPropertyEnum: SMPPropertyEnum.values()){ + Assert.assertEquals(SENSITIVE_PROPERTIES.contains(smpPropertyEnum), PropertyUtils.isSensitiveData(smpPropertyEnum.getProperty())); + } + } + + @Test + public void getMaskedData() { + String testValue = "TestValue"; + for (SMPPropertyEnum smpPropertyEnum: SMPPropertyEnum.values()){ + String expectedValue = SENSITIVE_PROPERTIES.contains(smpPropertyEnum)?"*******":testValue; + Assert.assertEquals(expectedValue, PropertyUtils.getMaskedData(smpPropertyEnum.getProperty(),testValue)); + } + } } \ No newline at end of file diff --git a/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql b/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql index b2cf07e7fb3fbc086cc8cbca5f604e40625d6ee7..669cadf52f0e7446f4a2abb6bd6bf8d5893ee786 100644 --- a/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql +++ b/smp-soapui-tests/groovy/mysql-4.1_integration_test_data.sql @@ -1,51 +1,51 @@ -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (1, 'peppol_user', '$2a$10$.pqNZZ4fRDdNbLhNlnEYg.1/d4yAGpLDgeXpJFI0sw7.WtyKphFzu','peppol_user', '$2a$10$.pqNZZ4fRDdNbLhNlnEYg.1/d4yAGpLDgeXpJFI0sw7.WtyKphFzu', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (2, 'the_admin', '','the_admin', '', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (3, 'AdminSMP1TEST', '$2a$06$u6Hym7Zrbsf4gEIeAsJRceK.Kg7tei3kDypwucQQdky0lXOLCkrCO','AdminSMP1TEST', '$2a$06$u6Hym7Zrbsf4gEIeAsJRceK.Kg7tei3kDypwucQQdky0lXOLCkrCO', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (4, 'AdminSMP2TEST', '$2a$10$h8Q3Kjbs6ZrGkU6ditjNueINlJOMDJ/g/OKiqFZy32WmdhLjV5TAi','AdminSMP2TEST', '$2a$10$h8Q3Kjbs6ZrGkU6ditjNueINlJOMDJ/g/OKiqFZy32WmdhLjV5TAi', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (5, 'test', '','test', '', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (6, 'test1', '$2a$06$toKXJgjqQINZdjQqSao3NeWz2n1S64PFPhVU1e8gIHh4xdbwzy1Uy','test1', '$2a$06$toKXJgjqQINZdjQqSao3NeWz2n1S64PFPhVU1e8gIHh4xdbwzy1Uy', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (7, 'system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SYSTEM_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (8, 'smp', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','smp', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SMP_ADMIN', 1, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (9, 'user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); - - -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (10, 'EHEALTH_SMP_EC', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (1, 'peppol_user@test-mail.eu','peppol_user', '$2a$10$.pqNZZ4fRDdNbLhNlnEYg.1/d4yAGpLDgeXpJFI0sw7.WtyKphFzu','peppol_user', '$2a$10$.pqNZZ4fRDdNbLhNlnEYg.1/d4yAGpLDgeXpJFI0sw7.WtyKphFzu', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (2, 'the_admin@test-mail.eu','the_admin', '','the_admin', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (3, 'AdminSMP1TEST@test-mail.eu','AdminSMP1TEST', '$2a$06$u6Hym7Zrbsf4gEIeAsJRceK.Kg7tei3kDypwucQQdky0lXOLCkrCO','AdminSMP1TEST', '$2a$06$u6Hym7Zrbsf4gEIeAsJRceK.Kg7tei3kDypwucQQdky0lXOLCkrCO', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (4, 'AdminSMP2TEST@test-mail.eu','AdminSMP2TEST', '$2a$10$h8Q3Kjbs6ZrGkU6ditjNueINlJOMDJ/g/OKiqFZy32WmdhLjV5TAi','AdminSMP2TEST', '$2a$10$h8Q3Kjbs6ZrGkU6ditjNueINlJOMDJ/g/OKiqFZy32WmdhLjV5TAi', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (5, 'test@test-mail.eu','test', '','test', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (6, 'test1@test-mail.eu','test1', '$2a$06$toKXJgjqQINZdjQqSao3NeWz2n1S64PFPhVU1e8gIHh4xdbwzy1Uy','test1', '$2a$06$toKXJgjqQINZdjQqSao3NeWz2n1S64PFPhVU1e8gIHh4xdbwzy1Uy', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (7, 'system@test-mail.eu','system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','system', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SYSTEM_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (8, 'smp@test-mail.eu','smp', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','smp', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ACCESS_TOKEN_ID, ACCESS_TOKEN, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (9, 'user@test-mail.eu','user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36','user', '$2a$06$FDmjewn/do3C219uysNm9.XG8mIn.ubHnMydAzC8lsv61HsRpOR36', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); + + +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (10,'EHEALTH_SMP_EC@test-mail.eu', 'EHEALTH_SMP_EC', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (10, 'CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787', date_add(NOW(),interval -1 year), date_add(NOW(),interval 1 year), NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (11, 'EHEALTH_ż_ẞ_Ẅ_,O', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (11,'EHEALTH_z_ẞ_W@test-mail.eu', 'EHEALTH_ż_ẞ_Ẅ_,O', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (11, 'CN=EHEALTH_z_ẞ_W_,O=European_z_ẞ_W_Commission,C=BE:f71ee8b11cb3b787', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (12, 'EHEALTH_SMP_1000000007-1', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (12,'EHEALTH_SMP_1000000007-1@test-mail.eu', 'EHEALTH_SMP_1000000007-1', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (12, 'CN=EHEALTH_SMP_1000000007,O=DG-DIGIT,C=BE:000000000123ABCD', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (14, 'EHEALTH_SMP_1000000007-2', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (14,'EHEALTH_SMP_1000000007-2@test-mail.eu', 'EHEALTH_SMP_1000000007-2', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (14, 'CN=EHEALTH_SMP_1000000007,O=DG-DIGIT,C=BE', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (15, 'EHEALTH&SMP_EC', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (15,'EHEALTH-SMP_EC@test-mail.eu', 'EHEALTH&SMP_EC', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (15, 'CN=EHEALTH&SMP_EC,O=European&Commission,C=B&E:f71ee8b11cb3b787', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (16, 'EHEALTH_SMP_EC2', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (16,'EHEALTH_SMP_EC2@test-mail.eu', 'EHEALTH_SMP_EC2', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (16, 'CN=EHEALTH_SMP_EC,O=European Commission,C=BE:000000000000100f', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (17, 'SMP_1000000007-3', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (17,'SMP_1000000007-3@test-mail.eu', 'SMP_1000000007-3', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (17, 'CN=SMP_1000000007,O=DG-DIGIT,C=BE', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (18, 'SMP_1000000007-4', '', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (18,'SMP_1000000007-4@test-mail.eu', 'SMP_1000000007-4', '', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (18, 'CN=SMP_1000000007,O=DG-DIGIT,C=BE:000000000123ABCD', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (19, 'SMP_1000000181,O=DIGIT,C=DK:123456789', '$2a$10$v2d/2E99dWHBM2ipTIip1enyaRKBTi.Xj/Iz0K8g0gjHBWdKRsHaC', 'SMP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (19,'SMP_1000000181@test-mail.eu', 'SMP_1000000181,O=DIGIT,C=DK:123456789', '$2a$10$v2d/2E99dWHBM2ipTIip1enyaRKBTi.Xj/Iz0K8g0gjHBWdKRsHaC', 'SMP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (19, 'CN=SMP_1000000181,O=DIGIT,C=DK:123456789', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (20, 'red_gw', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (20,'red_gw@test-mail.eu', 'red_gw', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (20, 'CN=red_gw,O=eDelivery,C=BE:9792CE69BC89F14C', null,null, NOW(), NOW()); -insert into SMP_USER (ID, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (21, 'blue_gw', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); +insert into SMP_USER (ID, EMAIL, USERNAME, PASSWORD, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (21,'blue_gw@test-mail.eu', 'blue_gw', '', 'SERVICE_GROUP_ADMIN', 1, NOW(), NOW()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (21, 'CN=blue_gw,O=eDelivery,C=BE:e07b6b956330a19a', null,null, NOW(), NOW()); -- insert domain insert into SMP_DOMAIN (ID, DOMAIN_CODE, SML_SUBDOMAIN, SML_SMP_ID, SIGNATURE_KEY_ALIAS, SML_CLIENT_KEY_ALIAS, SML_BLUE_COAT_AUTH,SML_REGISTERED, CREATED_ON, LAST_UPDATED_ON, SML_CLIENT_CERT_HEADER) -values (1, 'domain','','CEF-SMP-002', 'sample_key','sample_key', 1,0, NOW(), NOW(),'sno=1&subject=CN=SMP_TEST-PRE-SET-EXAMPLE, OU=eDelivery, O=DIGITAL, C=BE&validfrom=Dec 6 17:41:42 2016 GMT&validto=Jul 9 23:59:00 2050 GMT&issuer=CN=rootCNTest,OU=B4,O=DIGIT,L=Brussels,ST=BE,C=BE'); +values (1, 'domain','','CEF-SMP-001', 'sample_key','sample_key', 1,1, NOW(), NOW(),'sno=1&subject=CN=SMP_TEST-PRE-SET-EXAMPLE, OU=eDelivery, O=DIGITAL, C=BE&validfrom=Dec 6 17:41:42 2016 GMT&validto=Jul 9 23:59:00 2050 GMT&issuer=CN=rootCNTest,OU=B4,O=DIGIT,L=Brussels,ST=BE,C=BE'); insert into SMP_DOMAIN (ID, DOMAIN_CODE, SML_SUBDOMAIN, SML_SMP_ID, SIGNATURE_KEY_ALIAS, SML_BLUE_COAT_AUTH,SML_REGISTERED, CREATED_ON, LAST_UPDATED_ON) values (2, 'domainB','subdomain002', 'CEF-SMP-002','sample_key',1,0, CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); insert into SMP_DOMAIN (ID, DOMAIN_CODE, SML_SUBDOMAIN, SML_SMP_ID, SIGNATURE_KEY_ALIAS, SML_BLUE_COAT_AUTH,SML_REGISTERED, CREATED_ON, LAST_UPDATED_ON) values (3, 'domainC','subdomain003', 'CEF-SMP-003','sample_key',1,0, CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); diff --git a/smp-spi/pom.xml b/smp-spi/pom.xml index ead4a25ebaf238872c2df608177fc60f3b7ad327..d626978bb7f52e8bb27cf8928adb5cc59651b016 100644 --- a/smp-spi/pom.xml +++ b/smp-spi/pom.xml @@ -20,25 +20,16 @@ <version>4.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> - <artifactId>smp-spi</artifactId> <name>smp-spi</name> <description>SMP Service provider interface (SPI). The SMP SPI is an application interface intended to be implemented or extended by a third party as library. The libraries must be added to SMP library directory and are loaded at startup.</description> + <packaging>jar</packaging> <dependencies> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-junit</artifactId> - <scope>test</scope> - </dependency> </dependencies> <build> <plugins>