update KeyCloakConfig like in the KeycloakDemo
Co-authored-by: LukasEttel <lukas.ettie@yahoo.de> Co-authored-by: AndiBuls <andreas.buls@uni-duesseldorf.de>
This commit is contained in:
@ -59,9 +59,11 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
|
||||
|
||||
compile group: 'org.springframework.boot', name: 'spring-boot-starter-oauth2-client', version: '2.2.5.RELEASE'
|
||||
|
||||
implementation 'org.keycloak:keycloak-spring-boot-starter:9.0.0'
|
||||
implementation 'org.keycloak.bom:keycloak-adapter-bom:3.3.0.Final'
|
||||
implementation 'org.keycloak.bom:keycloak-adapter-bom:9.0.0'
|
||||
implementation 'mops:styleguide:2.1.0'
|
||||
implementation 'io.springfox:springfox-swagger2:2.9.2'
|
||||
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
|
||||
@ -73,6 +75,8 @@ dependencies {
|
||||
runtimeOnly 'com.h2database:h2'
|
||||
runtimeOnly 'mysql:mysql-connector-java'
|
||||
|
||||
compile group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.4.0.RELEASE'
|
||||
|
||||
testImplementation 'org.assertj:assertj-core:3.15.0'
|
||||
testImplementation('org.springframework.boot:spring-boot-starter-test') {
|
||||
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
|
||||
@ -80,6 +84,7 @@ dependencies {
|
||||
testImplementation 'org.springframework.security:spring-security-test'
|
||||
testImplementation 'com.tngtech.archunit:archunit-junit5:0.13.1'
|
||||
implementation 'junit:junit:4.12'
|
||||
implementation 'junit:junit:4.12'
|
||||
}
|
||||
|
||||
test {
|
||||
|
@ -11,6 +11,7 @@ import mops.gruppen2.service.APIFormatterService;
|
||||
import mops.gruppen2.service.EventService;
|
||||
import mops.gruppen2.service.GroupService;
|
||||
import mops.gruppen2.service.SerializationService;
|
||||
import org.springframework.security.access.annotation.Secured;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -33,6 +34,7 @@ public class APIController {
|
||||
}
|
||||
|
||||
@GetMapping("/updateGroups/{status}")
|
||||
@Secured("ROLE_api_user")
|
||||
@ApiOperation(value = "Gibt alle Gruppen zurück in denen sich etwas geändert hat")
|
||||
public UpdatedGroupRequestMapper updateGroup(@ApiParam("Letzter Status des Anfragestellers") @PathVariable Long status) throws EventException {
|
||||
List<Event> events = eventService.getNewEvents(status);
|
||||
|
@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import javax.annotation.security.RolesAllowed;
|
||||
@ -27,6 +28,8 @@ public class Gruppen2Controller {
|
||||
|
||||
@Autowired
|
||||
Gruppen2Config gruppen2Config;
|
||||
@Autowired
|
||||
RestTemplate serviceAccountRestTemplate;
|
||||
|
||||
private final KeyCloakService keyCloakService;
|
||||
private final EventService eventService;
|
||||
|
@ -1,8 +1,13 @@
|
||||
package mops.gruppen2.security;
|
||||
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
|
||||
import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
/**
|
||||
* WORKAROUND for https://issues.redhat.com/browse/KEYCLOAK-11282
|
||||
@ -15,4 +20,35 @@ public class KeycloakConfig {
|
||||
public KeycloakSpringBootConfigResolver keycloakConfigResolver() {
|
||||
return new KeycloakSpringBootConfigResolver();
|
||||
}
|
||||
|
||||
@Value("${keycloak.resource}")
|
||||
|
||||
private String clientId;
|
||||
|
||||
@Value("${keycloak.credentials.secret}")
|
||||
|
||||
private String clientSecret;
|
||||
|
||||
@Value("${hhu_keycloak.token-uri}")
|
||||
|
||||
private String tokenUri;
|
||||
|
||||
|
||||
@Bean
|
||||
public RestTemplate serviceAccountRestTemplate() {
|
||||
|
||||
ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
|
||||
|
||||
resourceDetails.setGrantType(OAuth2Constants.CLIENT_CREDENTIALS);
|
||||
|
||||
resourceDetails.setAccessTokenUri(tokenUri);
|
||||
|
||||
resourceDetails.setClientId(clientId);
|
||||
|
||||
resourceDetails.setClientSecret(clientSecret);
|
||||
|
||||
|
||||
return new OAuth2RestTemplate(resourceDetails);
|
||||
|
||||
}
|
||||
}
|
@ -23,17 +23,19 @@ public class EventService {
|
||||
this.eventStore = eventStore;
|
||||
}
|
||||
|
||||
/** sichert ein Event Objekt indem es ein EventDTO Objekt erzeugt
|
||||
/**
|
||||
* sichert ein Event Objekt indem es ein EventDTO Objekt erzeugt
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
public void saveEvent(Event event){
|
||||
public void saveEvent(Event event) {
|
||||
EventDTO eventDTO = getDTO(event);
|
||||
eventStore.save(eventDTO);
|
||||
}
|
||||
|
||||
/** Erzeugt aus einem Event Objekt ein EventDTO Objekt.
|
||||
* Ist die Gruppe öffentlich, dann wird die visibility auf true gesetzt.
|
||||
/**
|
||||
* Erzeugt aus einem Event Objekt ein EventDTO Objekt.
|
||||
* Ist die Gruppe öffentlich, dann wird die visibility auf true gesetzt.
|
||||
*
|
||||
* @param event
|
||||
* @return EventDTO
|
||||
@ -42,24 +44,24 @@ public class EventService {
|
||||
EventDTO eventDTO = new EventDTO();
|
||||
eventDTO.setGroup_id(event.getGroup_id());
|
||||
eventDTO.setUser_id(event.getUser_id());
|
||||
if(event instanceof CreateGroupEvent) {
|
||||
if(((CreateGroupEvent) event).getGroupVisibility() == Visibility.PRIVATE) {
|
||||
if (event instanceof CreateGroupEvent) {
|
||||
if (((CreateGroupEvent) event).getGroupVisibility() == Visibility.PRIVATE) {
|
||||
eventDTO.setVisibility(false);
|
||||
}else {
|
||||
} else {
|
||||
eventDTO.setVisibility(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
eventDTO.setEvent_payload(serializationService.serializeEvent(event));
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return eventDTO;
|
||||
return eventDTO;
|
||||
}
|
||||
|
||||
/** Sorgt dafür die Group_id immer um 1 zu erhöhen
|
||||
/**
|
||||
* Sorgt dafür die Group_id immer um 1 zu erhöhen
|
||||
*
|
||||
* @return Gibt Long zurück
|
||||
*/
|
||||
@ -77,30 +79,32 @@ public class EventService {
|
||||
return tmpId;
|
||||
}
|
||||
|
||||
/** Findet alle Events welche ab dem neuen Status hinzugekommen sind
|
||||
/**
|
||||
* Findet alle Events welche ab dem neuen Status hinzugekommen sind
|
||||
*
|
||||
* @param status
|
||||
* @return Liste von Events
|
||||
*/
|
||||
public List<Event> getNewEvents(Long status){
|
||||
public List<Event> getNewEvents(Long status) {
|
||||
List<Long> groupIdsThatChanged = eventStore.findNewEventSinceStatus(status);
|
||||
|
||||
List<EventDTO> groupEventDTOS = eventStore.findAllEventsOfGroups(groupIdsThatChanged);
|
||||
return translateEventDTOs(groupEventDTOS);
|
||||
}
|
||||
|
||||
/** Erzeugt aus einer Liste von eventDTOs eine Liste von Events
|
||||
/**
|
||||
* Erzeugt aus einer Liste von eventDTOs eine Liste von Events
|
||||
*
|
||||
* @param eventDTOS
|
||||
* @return Liste von Events
|
||||
*/
|
||||
public List<Event> translateEventDTOs(Iterable<EventDTO> eventDTOS){
|
||||
public List<Event> translateEventDTOs(Iterable<EventDTO> eventDTOS) {
|
||||
List<Event> events = new ArrayList<>();
|
||||
|
||||
for (EventDTO eventDTO : eventDTOS) {
|
||||
try {
|
||||
events.add(serializationService.deserializeEvent(eventDTO.getEvent_payload()));
|
||||
}catch (JsonProcessingException e) {
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@ -113,12 +117,12 @@ public class EventService {
|
||||
* @param createGroupEvents Liste von Event Objekten
|
||||
*/
|
||||
public void saveEventList(List<Event> createGroupEvents) {
|
||||
for(Event event : createGroupEvents) {
|
||||
for (Event event : createGroupEvents) {
|
||||
saveEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
public Long getMaxEvent_id(){
|
||||
public Long getMaxEvent_id() {
|
||||
return eventStore.getHighesEvent_ID();
|
||||
}
|
||||
|
||||
|
@ -12,5 +12,12 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
keycloak.principal-attribute=preferred_username
|
||||
keycloak.auth-server-url=https://keycloak.cs.hhu.de/auth
|
||||
keycloak.realm=MOPS
|
||||
keycloak.resource=demo
|
||||
keycloak.public-client=true
|
||||
|
||||
hhu_keycloak.token-uri=https://keycloak.cs.hhu.de/auth/realms/MOPS/protocol/openid-connect/token
|
||||
keycloak.resource=gruppenfindung
|
||||
keycloak.credentials.secret= fc6ebf10-8c63-4e71-a667-4eae4e8209a1
|
||||
keycloak.verify-token-audience=true
|
||||
keycloak.use-resource-role-mappings=true
|
||||
|
||||
keycloak.autodetect-bearer-only=true
|
||||
keycloak.confidential-port= 443
|
@ -1 +1,2 @@
|
||||
spring.profiles.active=dev
|
||||
spring.profiles.active=dev
|
||||
|
||||
|
Reference in New Issue
Block a user