KON-43 Synchronisation Interne Personen mit LDAP
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/config/CorsConfig.java b/src/main/java/org/eclipse/openk/contactbasedata/config/CorsConfig.java index 7988c90..486dd73 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/config/CorsConfig.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/config/CorsConfig.java
@@ -11,9 +11,6 @@ @Configuration public class CorsConfig { - @Value("${cors.allowedOrigins}") - private String allowedOrigins; - @Value("${cors.corsEnabled}") private boolean corsEnabled; @@ -24,10 +21,8 @@ public void addCorsMappings(CorsRegistry registry) { if (corsEnabled) { log.info("Cors enabled"); - log.info("AllowedOrigins: " + allowedOrigins); registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE").allowedOrigins("*") .allowedHeaders("*"); - //.allowedOrigins(allowedOrigins).maxAge(1800); } else { log.info("Cors disabled"); }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/config/SchedulingConfig.java b/src/main/java/org/eclipse/openk/contactbasedata/config/SchedulingConfig.java new file mode 100644 index 0000000..170f780 --- /dev/null +++ b/src/main/java/org/eclipse/openk/contactbasedata/config/SchedulingConfig.java
@@ -0,0 +1,24 @@ +package org.eclipse.openk.contactbasedata.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +@Log4j2 +@Configuration +@EnableScheduling +@ConditionalOnProperty(prefix = "ldap.scheduling", name="enabled", havingValue="true", matchIfMissing = false) +public class SchedulingConfig { + + @Value("${ldap.scheduling.cron-expression}") + private String cronExpression; + + @Bean + public void logConfig(){ + log.info("Scheduler is enabled with cron expression: " + cronExpression); + } + +}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/LdapController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/LdapController.java index a0f91e2..e5746aa 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/controller/LdapController.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/LdapController.java
@@ -22,12 +22,12 @@ import org.eclipse.openk.contactbasedata.viewmodel.LdapUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import java.lang.reflect.InvocationTargetException; import java.util.List; @Log4j2 @@ -46,13 +46,13 @@ return ldapUserService.getAllLdapUsers(); } - @ApiOperation(value = "Ermitteln der UserModules vom Auth'n'Auth-Service") + @ApiOperation(value = "Synchronisierung der User anhand des LDAPs") @ApiResponses(value = {@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")}) @ResponseStatus(HttpStatus.OK) @GetMapping( "/sync") - public String syncLdapUser() { - ldapUserService.synchronize(); - return ""; + public ResponseEntity<Object> syncLdapUser() { + ldapUserService.synchronizeLDAP(); + return ResponseEntity.ok().build(); } }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/UserController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/UserController.java index 0ba1a58..cb581ce 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/controller/UserController.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/UserController.java
@@ -43,7 +43,7 @@ return userService.getUserModules(); } - @ApiOperation(value = "Ermitteln der der KeycloakUsers vom Auth'n'Auth-Service") + @ApiOperation(value = "Ermitteln der KeycloakUsers vom Auth'n'Auth-Service") @ApiResponses(value = {@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")}) @GetMapping("/keycloak-users") public List<KeyCloakUser> getKeycloakUsers() {
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/KeyCloakUser.java b/src/main/java/org/eclipse/openk/contactbasedata/model/KeyCloakUser.java index d1277c1..ad5a48e 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/model/KeyCloakUser.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/model/KeyCloakUser.java
@@ -15,83 +15,35 @@ import java.util.Map; public class KeyCloakUser { - private String id; - private long createdTimestamp; + private String username; - private boolean enabled; - private boolean totp; - private boolean emailVerified; private String firstName; private String lastName; - private String name; - private List<String> realmRoles; - private Map<String, List<String>> clientRoles; - private List<String> disableableCredentialTypes; - private List<String> requiredActions; - - public String getId() { return id; } - public void setId(String id) { this.id = id; } - - public long getCreatedTimestamp() { return createdTimestamp; } - public void setCreatedTimestamp(long createdTimestamp) { this.createdTimestamp = createdTimestamp; } - - public String getUsername() { return username; } - public void setUsername(String username) { this.username = username; } - - public void setTotp(boolean totp) { this.totp = totp; } - - public void setEmailVerified(boolean emailVerified) { this.emailVerified = emailVerified; } - - public String getFirstName() { return firstName; } - public void setFirstName(String firstName) { this.firstName = firstName; } - - public String getLastName() { return lastName; } - public void setLastName(String lastName) { this.lastName = lastName; } - - public List<String> getDisableableCredentialTypes() { - return disableableCredentialTypes; - } - public void setDisableableCredentialTypes(List<String> disableableCredentialTypes) { this.disableableCredentialTypes = disableableCredentialTypes; } - - public List<String> getRequiredActions() { - return requiredActions; - } - public void setRequiredActions(List<String> requiredActions) { this.requiredActions = requiredActions; } - - public boolean isEnabled() { - return enabled; + public KeyCloakUser() { } - public boolean isTotp() { - return totp; + public String getUsername() { + return username; } - public boolean isEmailVerified() { - return emailVerified; + public void setUsername(String username) { + this.username = username; } - public List<String> getRealmRoles() { - return realmRoles; + public String getFirstName() { + return firstName; } - public void setRealmRoles(List<String> realmRoles) { - this.realmRoles = realmRoles; + public void setFirstName(String firstName) { + this.firstName = firstName; } - public Map<String, List<String>> getClientRoles() { - return clientRoles; + public String getLastName() { + return lastName; } - public void setClientRoles(Map<String, List<String>> clientRoles) { - this.clientRoles = clientRoles; - } - - public void setName() { - if (lastName!= null && !lastName.isEmpty()){ - this.name = firstName+ " " + lastName; - } else { - this.name = firstName; - } + public void setLastName(String lastName) { + this.lastName = lastName; } }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/InitPropertyLogger.java b/src/main/java/org/eclipse/openk/contactbasedata/service/InitPropertyLogger.java new file mode 100644 index 0000000..92552b2 --- /dev/null +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InitPropertyLogger.java
@@ -0,0 +1,37 @@ +package org.eclipse.openk.contactbasedata.service; + +import lombok.extern.log4j.Log4j2; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.env.OriginTrackedMapPropertySource; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.core.env.AbstractEnvironment; +import org.springframework.core.env.EnumerablePropertySource; +import org.springframework.core.env.Environment; +import org.springframework.core.env.MutablePropertySources; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.stream.StreamSupport; + +@Log4j2 +@Component +public class InitPropertyLogger { + + @EventListener + public void handleContextRefresh(ContextRefreshedEvent event) { + final Environment environment = event.getApplicationContext().getEnvironment(); + log.info("\n"); + log.info("============== Configuration =============="); + log.info("Active profile: {}", Arrays.toString(environment.getActiveProfiles())); + final MutablePropertySources sources = ((AbstractEnvironment) environment).getPropertySources(); + StreamSupport.stream(sources.spliterator(), false) + .filter(ps -> ps instanceof OriginTrackedMapPropertySource) + .map(ps -> ((OriginTrackedMapPropertySource) ps).getPropertyNames()) + .flatMap(Arrays::stream) + .distinct() + .forEach(prop -> log.info("{}: {}", prop, environment.getProperty(prop))); + log.info("===========================================\n"); + } +}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/LdapUserService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/LdapUserService.java index 424c28a..d661238 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/LdapUserService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/LdapUserService.java
@@ -1,17 +1,22 @@ package org.eclipse.openk.contactbasedata.service; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang.StringUtils; +import org.eclipse.openk.contactbasedata.exceptions.NotFoundException; +import org.eclipse.openk.contactbasedata.model.RefCommunicationType; +import org.eclipse.openk.contactbasedata.model.TblCommunication; import org.eclipse.openk.contactbasedata.model.TblInternalPerson; +import org.eclipse.openk.contactbasedata.repository.CommunicationRepository; +import org.eclipse.openk.contactbasedata.repository.CommunicationTypeRepository; import org.eclipse.openk.contactbasedata.repository.InternalPersonRepository; import org.eclipse.openk.contactbasedata.service.util.LdapUserAttributesMapper; import org.eclipse.openk.contactbasedata.viewmodel.LdapUser; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.ldap.core.LdapTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -21,6 +26,15 @@ @Service public class LdapUserService { + @Value("${ldap.attribute-mapping.uid}") + private String uid; + + @Value("${ldap.db-id-mapping.telephone-number-id}") + private Long telephoneNumberId; + + @Value("${ldap.db-id-mapping.mail-id}") + private Long mailId; + @Autowired LdapUserAttributesMapper ldapUserAttributesMapper; @@ -28,46 +42,113 @@ private InternalPersonRepository internalPersonRepository; @Autowired - private InternalPersonService internalPersonService; - - @Autowired private LdapTemplate ldapTemplate; + @Autowired + private CommunicationTypeRepository communicationTypeRepository; + + @Autowired + CommunicationRepository communicationRepository; + /** - * Retrieves all the persons in the ldap server, using {@link LdapUserAttributesMapper} - * @return list of persons + * Retrieves all the LdapUsers in the ldap server, using {@link LdapUserAttributesMapper} + * @return list of LdapUsers */ public List<LdapUser> getAllLdapUsers() { return ldapTemplate.search(query() .where("objectclass").is("person"), ldapUserAttributesMapper); } - public void synchronize() { + /** + * Retrieves the distinct the LdapUsers from the ldap server, using {@link LdapUserAttributesMapper} + * @return ldapUsers + */ + public List<LdapUser> getLdapUserByUID(String uid) { + return ldapTemplate.search(query() + .where("objectclass").is("person").and(this.uid).is(uid), ldapUserAttributesMapper); + } + + @Transactional + public void synchronizeLDAP() { List<TblInternalPerson> internalPersonList = internalPersonRepository.findByUidNotNull(); Map<String, TblInternalPerson> uidToInternalPersonMap = internalPersonList.stream().collect( Collectors.toMap(TblInternalPerson::getUid, Function.identity())); - List<LdapUser> allLdapUsers = getAllLdapUsers(); + List<LdapUser> allFoundLdapUsers = new ArrayList<>(); + List<TblInternalPerson> allNotExistingLdapUsers = new ArrayList<>(); + findExistingAndNotExistingLdapUsers(internalPersonList, allFoundLdapUsers, allNotExistingLdapUsers); List<TblInternalPerson> internalPersonListSynchronized = new ArrayList<>(); - for (LdapUser ldapUser : allLdapUsers) { + + RefCommunicationType refCommunicationTypeMail = getRefCommunicationType(mailId); + RefCommunicationType refCommunicationTypePhone = getRefCommunicationType(telephoneNumberId); + + for (LdapUser ldapUser : allFoundLdapUsers) { TblInternalPerson tblInternalPerson = uidToInternalPersonMap.get(ldapUser.getUid()); if (tblInternalPerson == null) continue; - boolean attributesChanged = mapLdapUserToInternaPerson(tblInternalPerson, ldapUser); + boolean attributesChanged = mapLdapUserToInternaPerson(tblInternalPerson, ldapUser, refCommunicationTypeMail, refCommunicationTypePhone); if (attributesChanged) { internalPersonListSynchronized.add(tblInternalPerson); } } + //Update all not found users notes with the sync error message + internalPersonRepository.saveAll(allNotExistingLdapUsers); + + //Update all found Users with the synchronized LDAP data internalPersonRepository.saveAll(internalPersonListSynchronized); } - private boolean mapLdapUserToInternaPerson(TblInternalPerson tblInternalPerson, LdapUser ldapUser) { + private RefCommunicationType getRefCommunicationType(Long refCommunicationTypeId) { + return communicationTypeRepository.findAll().stream() + .filter(x -> x.getId().equals(refCommunicationTypeId)) + .findFirst() + .orElseThrow(NotFoundException::new); + } + + private void findExistingAndNotExistingLdapUsers(List<TblInternalPerson> internalPersonList, List<LdapUser> allFoundLdapUsers, List<TblInternalPerson> allNotExistingLdapUsers) { + for (TblInternalPerson tblInternalPerson : internalPersonList) { + String uidTblInternalPerson = tblInternalPerson.getUid(); + List<LdapUser> ldapUserByUIDResult = getLdapUserByUID(uidTblInternalPerson); + + if(ldapUserByUIDResult.size() == 0){ + String errorMsg = String.format("[LDAP Sync Error] User with Uid: [ %s ] can not be found in LDAP", uidTblInternalPerson); + setNoteAndLogSyncError(allNotExistingLdapUsers, tblInternalPerson, errorMsg); + continue; + } + + if(ldapUserByUIDResult.size() > 1){ + String errorMsg = String.format("[LDAP Sync Error] More than one result for UID: [ %s ] in LDAP", uidTblInternalPerson); + setNoteAndLogSyncError(allNotExistingLdapUsers, tblInternalPerson, errorMsg); + continue; + } + + LdapUser ldapUser = ldapUserByUIDResult.get(0); + allFoundLdapUsers.add(ldapUser); + } + } + + private void setNoteAndLogSyncError(List<TblInternalPerson> allNotExistingLdapUsers, TblInternalPerson tblInternalPerson, String errorMsg) { + log.error(errorMsg); + String note = tblInternalPerson.getContact().getNote(); + if (note == null) note = ""; + if (!note.contains(errorMsg)) { + note = note + System.lineSeparator() + errorMsg; + tblInternalPerson.getContact().setNote(note); + allNotExistingLdapUsers.add(tblInternalPerson); + } + } + + private boolean mapLdapUserToInternaPerson(TblInternalPerson tblInternalPerson, LdapUser ldapUser, RefCommunicationType refCommunicationTypeMail, RefCommunicationType refCommunicationTypePhone) { boolean attributesChanged = false; + + attributesChanged = isCommunicationDataChangedAndSync(tblInternalPerson, ldapUser.getMail(), refCommunicationTypeMail, attributesChanged, mailId); + attributesChanged = isCommunicationDataChangedAndSync(tblInternalPerson, ldapUser.getTelephoneNumber(), refCommunicationTypePhone, attributesChanged, telephoneNumberId); + if (!Objects.equals(tblInternalPerson.getFirstName(), ldapUser.getFirstName()) - || !Objects.equals(tblInternalPerson.getLastName(), ldapUser.getLastName() ) - || !Objects.equals(tblInternalPerson.getTitle(), ldapUser.getTitle() ) + || !Objects.equals(tblInternalPerson.getLastName(), ldapUser.getLastName()) + || !Objects.equals(tblInternalPerson.getTitle(), ldapUser.getTitle()) || !Objects.equals(tblInternalPerson.getDepartment(), ldapUser.getDepartment())) { attributesChanged = true; tblInternalPerson.setFirstName(ldapUser.getFirstName()); @@ -78,5 +159,35 @@ return attributesChanged; } + private boolean isCommunicationDataChangedAndSync(TblInternalPerson tblInternalPerson, String communicationdata, RefCommunicationType refCommunicationType, boolean attributesChanged, Long communicationTypeId) { + List<TblCommunication> tblCommunicationList = tblInternalPerson.getContact().getCommunications(); + + Optional<TblCommunication> optionalTblCommunication = tblCommunicationList.stream() + .filter(tblCommunication -> tblCommunication.getRefCommunicationType().getId().equals(communicationTypeId)) + .findFirst(); + + if (optionalTblCommunication.isPresent()) { + if (!Objects.equals(optionalTblCommunication.get().getCommunicationData(), communicationdata)){ + optionalTblCommunication.get().setCommunicationData(communicationdata); + attributesChanged = true; + } + } else { + attributesChanged = createAndSaveNewTblCommunication(tblInternalPerson, communicationdata, refCommunicationType, attributesChanged); + } + return attributesChanged; + } + + private boolean createAndSaveNewTblCommunication(TblInternalPerson tblInternalPerson, String communicationData, RefCommunicationType refCommunicationType, boolean attributesChanged) { + if (StringUtils.isEmpty(communicationData)) return attributesChanged; + TblCommunication tblCommunication = new TblCommunication(); + tblCommunication.setUuid(UUID.randomUUID()); + tblCommunication.setTblContact(tblInternalPerson.getContact()); + tblCommunication.setRefCommunicationType(refCommunicationType); + tblCommunication.setCommunicationData(communicationData); + communicationRepository.save(tblCommunication); + tblInternalPerson.getContact().getCommunications().add(tblCommunication); + return true; + } + }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/SchedulingService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/SchedulingService.java new file mode 100644 index 0000000..702e3ec --- /dev/null +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/SchedulingService.java
@@ -0,0 +1,23 @@ +package org.eclipse.openk.contactbasedata.service; + +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; + +@Log4j2 +@Service +public class SchedulingService { + + @Autowired + LdapUserService ldapUserService; + + @Scheduled(cron = "${ldap.scheduling.cron-expression}") + public void scheduleTaskSynchronize() { + log.info("Executing scheduled task: Synchronizing Users"); + ldapUserService.synchronizeLDAP(); + log.info("Finished scheduled task: Synchronizing Users"); + } +}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/UserService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/UserService.java index c0d96cb..1d946ca 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/UserService.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/UserService.java
@@ -26,21 +26,17 @@ @Service public class UserService { + @Autowired private AuthNAuthApi authNAuthApi; - @Value("${jwt.staticJwt}") - private String staticJwt; - public List<UserModule> getUserModules() { String bearerToken = (String)SecurityContextHolder.getContext().getAuthentication().getDetails(); return authNAuthApi.getUserModulesForUser(bearerToken); } public List<KeyCloakUser> getKeycloakUsers() { - //String bearerToken = (String)SecurityContextHolder.getContext().getAuthentication().getDetails(); - Object details = SecurityContextHolder.getContext().getAuthentication().getDetails(); - String bearerToken = staticJwt; + String bearerToken = (String)SecurityContextHolder.getContext().getAuthentication().getDetails(); return authNAuthApi.getKeycloakUsers(bearerToken); } }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapper.java index 2738cc2..033f5bf 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapper.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapper.java
@@ -29,25 +29,31 @@ ---------------------- */ - @Value("${ldap.uid}") + @Value("${ldap.attribute-mapping.uid}") private String uid; - @Value("${ldap.fullname}") + @Value("${ldap.attribute-mapping.fullname}") private String fullname; - @Value("${ldap.lastname}") + @Value("${ldap.attribute-mapping.lastname}") private String lastname; - @Value("${ldap.firstname}") + @Value("${ldap.attribute-mapping.firstname}") private String firstname; - @Value("${ldap.title}") + @Value("${ldap.attribute-mapping.title}") private String title; - @Value("${ldap.mail}") + @Value("${ldap.attribute-mapping.department}") + private String department; + + @Value("${ldap.attribute-mapping.mail}") private String mail; - @Value("${ldap.password}") + @Value("${ldap.attribute-mapping.telephone-number}") + private String telephoneNumber; + + @Value("${ldap.attribute-mapping.password}") private String password; @@ -75,6 +81,14 @@ if (attribute != null) { ldapUser.setTitle((String) attribute.get()); } + attribute = attributes.get(department); + if (attribute != null) { + ldapUser.setDepartment((String) attribute.get()); + } + attribute = attributes.get(telephoneNumber); + if (attribute != null) { + ldapUser.setTelephoneNumber((String) attribute.get()); + } attribute = attributes.get(mail); if (attribute != null) { ldapUser.setMail((String) attribute.get());
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/LdapUser.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/LdapUser.java index 6b1601b..5d5db8f 100644 --- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/LdapUser.java +++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/LdapUser.java
@@ -18,6 +18,8 @@ private String title; private String department; private String mail; + private String telephoneNumber; + private byte[] password; public LdapUser() { @@ -102,6 +104,14 @@ this.title = title; } + public String getTelephoneNumber() { + return telephoneNumber; + } + + public void setTelephoneNumber(String telephoneNumber) { + this.telephoneNumber = telephoneNumber; + } + @Override public String toString() { return uid;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 774100c..83830a7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml
@@ -25,13 +25,22 @@ urls: ldap://entopkon:10389 ldap: - uid: uid - fullname: cn - lastname: sn - firstname: givenname - title: title - mail: mail - password: userpassword + attribute-mapping: + uid: uid + fullname: cn + lastname: sn + firstname: givenname + title: title + mail: mail + department: department + telephone-number: phone + password: userpassword + db-id-mapping: + mail-id: 1 + telephone-number-id: 2 + scheduling: + enabled: false + cron-expression: '*/10 * * * * *' server: max-http-header-size: 262144 @@ -56,7 +65,6 @@ connectTimeout: 60000 readTimeout: 60000 cors: - allowedOrigins: http://localhost:8080 corsEnabled: false logging: @@ -84,6 +92,26 @@ --- spring: + profiles: devserver-local + +jwt: + tokenHeader: Authorization + useStaticJwt: false + staticJwt: eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJIYlI3Z2pobmE2eXJRZnZJTWhUSV9tY2g3ZmtTQWVFX3hLTjBhZVl0bjdjIn0.eyJqdGkiOiI5MGI0NGFkOC1iYjlmLTQ1MzktYTQwYy0yYjQyZTNkNjNiOGEiLCJleHAiOjE1Nzg2NTU3OTUsIm5iZiI6MCwiaWF0IjoxNTc4NjU1NDk1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMvRWxvZ2Jvb2siLCJhdWQiOiJlbG9nYm9vay1iYWNrZW5kIiwic3ViIjoiODYyNjY5NmYtZjFhMi00ZGI1LTkyZWYtZTlhMjQ2Njg1YTU0IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZWxvZ2Jvb2stYmFja2VuZCIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6IjJmMWIzODE5LWZjNjQtNDEzNC1iNWQxLWY3ZWY4NzU5NDBkNCIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsia29uLWFkbWluIiwia29uLXdyaXRlciIsImtvbi1hY2Nlc3MiLCJrb24tcmVhZGVyIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnt9LCJuYW1lIjoiVGVzdGVyRmlyc3RuYW1lX3J3YSBUZXN0ZXJMYXN0bmFtZV9yd2EiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0dXNlcl9yd2EiLCJnaXZlbl9uYW1lIjoiVGVzdGVyRmlyc3RuYW1lX3J3YSIsImZhbWlseV9uYW1lIjoiVGVzdGVyTGFzdG5hbWVfcndhIn0.DAYXuv4tKn8RXqO1jyttnD-tF4nShUBQyfe4bKbAiPAyY2x5YbAf3M4eXnLrGqo8-loGKldICC28bL0LaMA3KKkQEOfW5sfpGqoN6212vs89mOklt0TJYc5PMXwFgJ5WC_TKjdwq7-aaDafOEWehV0U1ut3s-94ovNYIEn29nzXm2W1ldoXJEq03F880jlysQ5zlRvGF7eXEEpFfI2URyyNQ2UWh0Ssfq-gOAt2pbF1u6prA5RfvUmZ3v1eu21YLGZtgqPqxb1l6odyH3ip15j_HdgnTeo52ymxuRUj65Mskme3V5ev2DitHI9vZgnpV8Idhb4TTWliBeGCOMfDFCg + +server: + port: 9155 + +cors: + corsEnabled: true + +authNAuthService: + ribbon: + listOfServers: http://localhost:8080 + +--- + +spring: profiles: devserver jwt: @@ -95,7 +123,6 @@ port: 9155 cors: - allowedOrigins: http://localhost:8080 corsEnabled: true @@ -113,7 +140,6 @@ port: 9156 cors: - allowedOrigins: http://localhost:8080 corsEnabled: true --- @@ -148,5 +174,4 @@ listOfServers: http://localhost:8080 cors: - allowedOrigins: http://localhost:8080 corsEnabled: true \ No newline at end of file